[alibaba/easyexcel]模板填充场景下,指定写入的SheetName在模板中不存在时NullPointerException

2024-05-11 508 views
2

触发场景描述 根据模板写入excel,指定写入的SheetName在模板中不存在时直接抛出NullPointerException 。 触发Bug的代码

 WriteSheet writeSheet = EasyExcel.writerSheet("SheetName").build();

提示的异常或者没有达到的效果 Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.util.List.iterator()" because "analysisCellList" is null at com.alibaba.excel.write.executor.ExcelWriteFillExecutor.doFill(ExcelWriteFillExecutor.java:179) at com.alibaba.excel.write.executor.ExcelWriteFillExecutor.fill(ExcelWriteFillExecutor.java:106) at com.alibaba.excel.write.ExcelBuilderImpl.fill(ExcelBuilderImpl.java:78) at com.alibaba.excel.ExcelWriter.fill(ExcelWriter.java:185)

回答

9

你的目的是:根据模板写出的excel,需要修改其sheetName 但其实这writerSheet("SheetName")里是设置读取的模板的sheetName,并不是写出的sheetName,不填的话默认读sheetNo=0的, easyExcel暂时貌似不支持直接在这里改,只能通过拦截器在afterSheetCreatefh方法中改, 你可以试试

4

你的目的是:根据模板写出的excel,需要修改其sheetName 但其实这writerSheet("SheetName")里是设置读取的模板的sheetName,并不是写出的sheetName,不填的话默认读sheetNo=0的, easyExcel暂时貌似不支持直接在这里改,只能通过拦截器在afterSheetCreatefh方法中改, 你可以试试

个人测试后发现,无法改填充后的sheetName,反射或许可行。

7

你的目的是:根据模板写出的excel,需要修改其sheetName 但其实这writerSheet("SheetName")里是设置读取的模板的sheetName,并不是写出的sheetName,不填的话默认读sheetNo=0的, easyExcel暂时貌似不支持直接在这里改,只能通过拦截器在afterSheetCreatefh方法中改, 你可以试试

writerSheet("SheetName")是指定导出sheet对象的吧?我刚写demo测试的。。。

3

已经在3.0.0-beta1 版本修复,beta版本会在一个月内升级成正式版。