[alibaba/easyexcel]导出一个20w行数据excel,需要124s左右,这种有什么优化技巧,大神们

2024-05-11 344 views
3

将20w数据分批,每批8w数据,第一第二批8w数据,最后一批4w数据,按顺序写3个sheet,第一第二个sheet8w数据,第三个sheet4w数据,导出总共需要124s,写第一个第二个sheet需要49s,写第三个sheet需要26s。以下是代码

List<List> parts = Lists.partition(data, 80000);
for (int i = 0; i < parts.size(); i++) {
    WriteSheet writeSheet = EasyExcel.writerSheet(i, "sheet" + i).build();
    excelWriter.write(parts.get(i),writeSheet);
}

回答

1

如果不考虑内存和其他的只针对导出时间优化,用多线程来操作文档导出

8

作者表示过目前是不支持多线程的

0

我之前测试过 单批次数据量过大 反倒会写入效率会降低,可以调整测试一下合适的批次

3

多线程导出文件被破坏,无法打开

1

我用流式查询,导出60W数据没有问题,并且内存占用不高。注意最多每100W行换一个sheet

0

你好,可以看一下你的流式写法嘛?我这边写了有问题。

7

可以用下 3.0.5 应该会快很多