EasyExcel中使用表头模板示例

发布时间 2023-07-26 15:23:36作者: 进击的冬瓜

解决方案

在EasyExcel的官方示例中,使用模板导出Excel,其结果仍然还会重新打印表头。不满足使用表头模板的需求。在参考源码后,找到如下解决方案。

        String templateFileName = TestFileUtil.getPath() + "demo" + File.separator + "demo1.xlsx";
        System.out.println(templateFileName);
        String fileName = TestFileUtil.getPath() + "templateWrite" + System.currentTimeMillis() + ".xlsx";
        System.out.println(fileName);
        // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
//        EasyExcel.write(fileName, DemoData.class).withTemplate(templateFileName).sheet().doWrite(data());
        EasyExcel.write(fileName).withTemplate(templateFileName).sheet().doWrite(data());

 

导出实体类定义

 1 public class DemoData {
 2     @ExcelProperty("字符串标题")
 3     private String string;
 4     @ExcelProperty("日期标题")
 5     private Date date;
 6     @ExcelProperty("数字标题")
 7     private Double doubleData;
 8 
 9     /**
10      * 忽略这个字段
11      */
12     @ExcelIgnore
13     private String ignore;
14 }

 

 

运行结果

没有打印导出实体类定义的表头,使用的是模板的表头。符合目标需求。

 

若沿用官方示例的写法。其运行结果为:双层表头带数据信息。

 

总结

 EasyExcel.write(fileName, DemoData.class)方法中第二参数表示Excel文件的表头,若不传则不会写表头列信息;同时doWirte(data())中的data信息仍然为导出实体类的List集合对象。