[alibaba/easyexcel]写数据时写入指定sheet后其他sheet丢失

2019-11-14 650 views
3

触发场景描述  写数据时写入指定sheet后其他sheet丢失
触发Bug的代码

        ExcelWriter writer = EasyExcel.write(inFileName).build();
        WriteSheet sheet = EasyExcel.writerSheet(8, "sheet9").head(Relation.class).build();
        writer.write(relationList, sheet);
        writer.finish();

提示的异常或者没有达到的效果
 Excel中共有10个sheet,我只向第9个sheet中写入数据后,其他9个sheet数据丢失。


 写入前 10


 写入后 20

回答

3

excel写入并不会考虑之前的数据情况,如果想要保留数据应该使用API

com.alibaba.excel.write.builder.ExcelWriterBuilder#withTemplate(java.lang.String)
com.alibaba.excel.write.builder.ExcelWriterBuilder#withTemplate(java.io.File)
com.alibaba.excel.write.builder.ExcelWriterBuilder#withTemplate(java.io.InputStream)

数据量较小时可以直接将数据加载到内存里覆盖原来的文件,数据量大的情况还是生成额外的文件比较好

2

withTemplate @pdkst

ExcelWriterBuilder excelWriterBuilder = new ExcelWriterBuilder();
excelWriterBuilder.autoCloseStream(true);
excelWriterBuilder.withTemplate(inFileName).sheet(8, "sheet9").head(Relation.class).doWrite(relationList);

这个ExcelWriterBuilder怎么关闭 0.0
1111

5

你没有指定输出文件

EasyExcel.write(fileName, DemoData.class).withTemplate(templateFileName).sheet().doWrite(data());

参考官方demo

0

感谢!!

但还是不行, fileName文件是写成功了,但是里面其他sheet仍然丢失了,templateFileName里未写入数据。
算了,我还是写到一个新的文件里吧。

建议将“写入指定sheet,其他sheet可不更改”作为一个feature投入任务池