EasyExcel使用及自定义设置单元格样式

EasyExcel使用及自定义设置单元格样式

 

固定模板方式,首先创建要Excel数据列模板;当然EasyExcel 中也可以动态自定义表头,其实都差不多一样

下面案例中,我采用一个固定模板方式,主要记录下,如何自定义单元格样式

 

这里是导出方法,主要是绑定样式,指定Excel文件生成的路径

public static String ExcelWrite(ExportParamDto excelData) { String fileName = getPath() + System.currentTimeMillis() + ".xlsx"; // 头的策略 WriteCellStyle headWriteCellStyle = new WriteCellStyle(); // 背景色 headWriteCellStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex()); WriteFont headWriteFont = new WriteFont(); headWriteFont.setFontHeightInPoints((short) 12); headWriteCellStyle.setWriteFont(headWriteFont); // 内容的策略 WriteCellStyle contentWriteCellStyle = new WriteCellStyle(); // 这里需要指定 FillPatternType 为FillPatternType.SOLID_FOREGROUND 不然无法显示背景颜色.头默认了 FillPatternType所以可以不指定// contentWriteCellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND);// contentWriteCellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND); // 背景绿色// contentWriteCellStyle.setFillForegroundColor(IndexedColors.GREEN.getIndex()); // 字体策略 WriteFont contentWriteFont = new WriteFont(); // 字体大小 contentWriteFont.setFontHeightInPoints((short) 12); contentWriteCellStyle.setWriteFont(contentWriteFont); //设置 自动换行 contentWriteCellStyle.setWrapped(true); //设置 垂直居中 contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);// //设置 水平居中// contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);// //设置边框样式// contentWriteCellStyle.setBorderLeft(DASHED);// contentWriteCellStyle.setBorderTop(DASHED);// contentWriteCellStyle.setBorderRight(DASHED);// contentWriteCellStyle.setBorderBottom(DASHED); // 这个策略是 头是头的样式 内容是内容的样式 其他的策略可以自己实现 HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle); // 方法3 如果写到不同的sheet 不同的对象 // 这里 指定文件 ExcelWriter excelWriter = EasyExcel.write(fileName).build(); // 去调用写入,这里我调用了五次,实际使用时根据数据库分页的总的页数来。这里最终会写到5个sheet里面 WriteSheet writeSheet; List testList = excelData.getSheetAndMapListDtoList(); for (int i = 0; i < testList.size(); i++) { // 每次都要创建writeSheet 这里注意必须指定sheetNo。这里注意DemoData.class 可以每次都变,我这里为了方便 所以用的同一个class 实际上可以一直变 writeSheet = EasyExcel.writerSheet(i, testList.get(i).getRealSheetName()) .head(TestProTplDto.class) .registerWriteHandler(horizontalCellStyleStrategy) .registerWriteHandler(new CustomCellWriteHandler()) .build(); // 分页去数据库查询数据 这里可以去数据库查询每一页的数据 excelWriter.write((ArrayList) testList.get(i).getMapList(), writeSheet); } // finish 关闭流 excelWriter.finish(); return fileName; }

关于自定义绑定单元格样式,查了很多,要么版本不匹配要么实现有问题,

转来翻去,突然发现如图这一段,这是官网给的Demo中生成Excel时绑定 表头的样式,官网也有提到可以 注册监听方法

 

 想到这,思路一下就开阔起来了,那么我们是不是也可以写一个 监听方法,在监听方法中,实现对单元格样式的控制呢?

实现如下

我们自定义一个类实现 CellWriteHandler 接口

这里面有个坑,相比大家已经看到了 这个类中注释掉的方法了,

看了官网 自定义拦截器。对第一行第一列的头超


比丘资源网 » EasyExcel使用及自定义设置单元格样式

发表回复

提供最优质的资源集合

立即查看 了解详情