[alibaba/easyexcel]EasyExcel.write这种方式如何分批往同一个excel追加写

2024-05-21 507 views
9

我看了文档,然后网上也搜了下,实在找不到方法了,恳请大佬解答下,谢谢

回答

7

我用了一段时间,easyexcel 数据添加跟样式添加不是同时添加的,我的理解是,doWrite()方法之前的处理方式算它是样式处理,doWrite(dataList) dataList算数据 。但是在doWrite方法前会有自定义hander 在这个阶段是可以添加数据的。不管你在这个阶段怎么添加数据 ,dataList都只会在doWrite()方法之前处理方式执行之后追加数据,所以我才把doWrite()方法之前的处理方式算样式。看看源码会有workbook,sheet,row,cell创建前后的动作,你可以选择相应的时机添加数据。如果都不可以。我有一个思路但是还没有实现,我可以先告诉你:先把你的动态头,还有相应的数据在相应的位置 按照填充的方法写相应{value}或者{.value} 然后输出成excel 再把它当作模板,再读取再添加,再生成模板,依次循环。我只有这么一个想法。。。。

4

感谢解答,我已经找到了追加往里写得代码 场景是调用分页接口,把每页得list往里追加写

重要代码

ExcelWriter excelWriter = EasyExcel.write(file, table.class) WriteSheet writeSheet = EasyExcel.writerSheet(1).build(); 在这里循环把每页得list查出来,写 excelWriter.write(list, writeSheet); 最后 excelWriter.finish()

2

你这么写只是适用于数据量不大的情况,当数据量大,你把数据放内存里,如果并发高的话,那将是一个灾难

9

我现在就是遇到了这种情况,和楼上写的一样,数据量大了的时候,excelWriter.finish()关闭的时候报内存溢出了

5

这样感觉很啰嗦,还要把之前已存在的数据查一遍再保留进去,感觉像脱了裤子放屁,希望官方能支持追加功能,包括追加sheet页的功能