在看这篇文章的时候,我已经认为你了解了EasyExcel的基础用法了。
// 这个用法知道是前提条件 EasyExcel.write()
首先看下我生成的复杂表头是什么样子的
①:一些除表头之外的其他数据信息
②:表头信息
一般EasyExcel导出的表头都是默认从第一行开始的,现在要做到表头的位置不在第一行。
EasyExcel使用这个参数,设置表头在第5行开始,0是第一行
//设置默认样式及写入头信息开始的行数 .useDefaultStyle(true).relativeHeadRowIndex(4)
设置之后EasyExcel就可以在相应的位置插入表头了,接下来就是在表头上面那部分写入一些指定的数据
自定义一个拦截器,实现这个接口
SheetWriteHandler
具体代码如下:
@Data public class CustomSheetWriteHandler implements SheetWriteHandler { private Demo demo; public CustomSheetWriteHandler(Demo demo) { this.demo = demo; } @Override public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) { } // 在Excel工作页创建之后,进行操作 @Override public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) { Workbook workbook = writeWorkbookHolder.getWorkbook(); Sheet sheet = workbook.getSheetAt(0); // 设置0行0列,这里可以设置一些自定义的样式,颜色,文本,背景等等 Row row = sheet.createRow(0); Cell cell = row.createCell(0); cell.setCellValue("公式"); // 设置1行0列 Row row1 = sheet.createRow(1); Cell cell1 = row1.createCell(0); cell1.setCellValue("数学公式"); } }
使用自定义拦截器的构造方法可以传一些需要填写的参数
设置cell的时候,也可以设置单元格的样式。
成品的效果,如上图展示所示。
如果有错误的地方,欢迎在评论区指出,谢谢。
2021-08-20 00:07:12