EasyExcel使用注解方式导出数据(定义标题样式和列宽)


列宽设置

如果要好看,只能每个属性字段都不手动设置,这个太麻烦了

直接类上标记列宽注解,这种方式比较简单

@ExcelIgnoreUnannotated
@ColumnWidth(20)
public class ContractExpenditureApplyOffsetTypeExportDto{}

效果

 

 

 

 

表头标题字体大小是否自动换行设置

参考下面的导出工具类

/**
 * easyexcel注解导出工具类
 * @author zwh
 * @date 2021/3/4 16:44
 **/
public class EasyExcelWriteExportUtils {

    /**
     * 注解导出工具类
     * @param exportList
     * @param outFileName
     * @param response
     * @param isCloseExcel
     * @return
     */
    public static ExcelWriter exportToResponse(List exportList, String outFileName,
                                                  String sheetName,
                                                  Class clazz,
                                                  HttpServletResponse response,
                                                  boolean isCloseExcel) {
        ExcelWriter excelWriter = null;
        try {
            // 头的策略
            WriteCellStyle headWriteCellStyle = EasyExcelWriteExportUtils.buildHeadCellStyle();
            HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle,
                    new ArrayList<WriteCellStyle>());

            excelWriter = EasyExcelWriteExportUtils.getExcelWriter(outFileName,
                    clazz,
                    Arrays.asList(horizontalCellStyleStrategy),
                    response);

            WriteSheet writeSheet = EasyExcel.writerSheet(sheetName).build();
            excelWriter.write(exportList, writeSheet);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(isCloseExcel){
                // 别忘记关闭流
                if (excelWriter != null) {
                    excelWriter.finish();
                }
            }
        }
        if (isCloseExcel) {
            return null;
        } else {
            return excelWriter;
        }
    }

    /**
     * 根据输出文件名获取excelWriter类
     *
     * @param outFileName
     * @param response
     */
    public static ExcelWriter getExcelWriter(String outFileName, Class clazz, List<WriteHandler> writeHandlerList, HttpServletResponse response) throws IOException {
        ExcelWriter excelWriter = null;
        response.reset();
        response.setContentType("application/octet-stream; charset=utf-8");
        response.setHeader("Content-Disposition", "attachment; filename=" + EncodeUtils.encodeUrl(outFileName));

        OutputStream out = response.getOutputStream();
        //这里指定需要表头,因为model通常包含表信头息
        if (writeHandlerList != null && !writeHandlerList.isEmpty()) {
            ExcelWriterBuilder excelWriterBuilder = EasyExcelFactory.write(out, clazz);
            for (WriteHandler writeHandler : writeHandlerList) {
                excelWriterBuilder.registerWriteHandler(writeHandler);
            }
            excelWriter = excelWriterBuilder.build();
        } else {
            excelWriter = EasyExcelFactory.write(out, clazz).build();
        }

        return excelWriter;
    }
    /**
     * Build head cell style
     *
     * @return
     */
    public static WriteCellStyle buildHeadCellStyle() {
//        CellStyle headCellStyle = StyleUtil.buildHeadCellStyle(workbook, null);
        WriteCellStyle headWriteCellStyle = new WriteCellStyle();
        headWriteCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
        WriteFont headWriteFont = new WriteFont();
        headWriteFont.setFontName("宋体");
        headWriteFont.setFontHeightInPoints((short)12);
        headWriteFont.setBold(true);
        headWriteCellStyle.setWriteFont(headWriteFont);
        //自动换行
        headWriteCellStyle.setWrapped(false);
        return headWriteCellStyle;
    }
}

 

使用示例

EasyExcelWriteExportUtils.exportToResponse(listData, "合作费确认数据.xlsx",
                    "合作费确认数据",
                    ContractExpenditureApplyOffsetTypeExportDto.class,
                    response,
                    true);

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM