触发场景描述 使用项目中已有的测试demo进行模版测试list填充(master分支)
com.alibaba.easyexcel.test.demo.fill.FillTest#listFill
使用项目的demo代码测试可以触发Bug
public class FillTest {
//省略其他代码
// ......
/**
* 填充列表
*
* @since 2.1.1
*/
@Test
public void listFill() {
// 模板注意 用{} 来表示你要用的变量 如果本来就有"{","}" 特殊字符 用"\{","\}"代替
// 填充list 的时候还要注意 模板中{.} 多了个点 表示list
String templateFileName = TestFileUtil.getPath() + "demo" + File.separator + "fill" + File.separator + "list.xlsx";
String fileName = TestFileUtil.getPath() + "listFill" + System.currentTimeMillis() + ".xlsx";
// ...... 省略无关代码
// 方案3 分多次 填充 会使用文件缓存(省内存)
fileName = TestFileUtil.getPath() + "listFill" + System.currentTimeMillis() + ".xlsx";
try (ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(templateFileName).build()) {
WriteSheet writeSheet = EasyExcel.writerSheet().build();
//这里新增一个循环填充
for (int i = 0; i < 100; i++) {
excelWriter.fill(data1(), writeSheet);
excelWriter.fill(data1(), writeSheet);
}
}
}
//新增data1()
private List<Map<String,String>> data1(){
Map<String, String> data1 = new HashMap<>();
data1.put("name", "张三三");
data1.put("number", "001");
data1.put("date", "2022-06-20");
//只放date
Map<String, String> data2 = new HashMap<>();
data2.put("date", "2022-06-20");
List<Map<String,String>> list = new ArrayList<>();
list.add(data1);
list.add(data2);
return list;
}
提示的异常或者没有达到的效果 填充过程未出现异常,但填充完后excel无法打开,出现错误,如下图:
另外:发现2.2.11不会有此问题