解决方案
在EasyExcel的官方示例中,使用模板导出Excel,其结果仍然还会重新打印表头。不满足使用表头模板的需求。在参考源码后,找到如下解决方案。
1
2
3
4
5
6
7
|
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集合对象。
© 版权声明
文章版权归作者所有,未经允许请勿转载,侵权请联系 admin@trc20.tw 删除。
THE END