POI 如何快速导出千万级数据的 Excel

2021-08-11 17:26:37 +08:00
 Kimen

在使用 POI 导出一千万行数据到 Excel 时,CPU 长时间爆炸💥
现在的解决方案是:

现已探明的问题:
一千万的数据在创建 Excel 前都存储在 list 中,当 list 占用内存很小时,导出很快,一旦 list 变得很大,分段导出都会变的很慢

5385 次点击
所在节点    Java
53 条回复
kg2019
2021-08-12 13:27:41 +08:00
easyExce 了解一下
levon
2021-08-12 13:30:49 +08:00
分文件吧,存在一个 excel 里干吗用
jack778
2021-08-12 13:42:23 +08:00
那么大弄成一个文件怎么操作呢,客户的电脑配置有多牛呢
Hallelu
2021-08-12 13:50:57 +08:00
之前跟一个客户做 excel 导出的功能,他说数据多,直接给他声明,单个 excel 超过一百万,不做....
est
2021-08-12 14:13:44 +08:00
.csv 斥候
dayeye2006199
2021-08-12 14:35:15 +08:00
建议走 tsv + 份文件 + 压缩的路线吧。
excel 虽然很牛。。但也不是万能的。
Vegetable
2021-08-12 14:38:04 +08:00
实际上,这个性能瓶颈时 Excel 本身带来的,Excel 天生不适合大规模数据,导出到 Excel 是一个非常耗时的操作。建议不要分 Sheet,而是分工作簿。
wxw752
2021-08-12 15:15:27 +08:00
easyexcel 导出 List<Map<String, Object>> 这种格式的 我昨天刚写完
wxy1991
2021-08-12 19:18:20 +08:00
除了 easyexcel 还有个 eec,不用依赖 poi,效率比 easyexcel 还要高,不过你这很明显需求不合理,1000w 的 excel 我就不信有电脑能打开,我的破电脑打开个 500m 的 word 感觉就要卡死了
someonedeng
2021-08-12 22:34:03 +08:00
真给他导出了,他怎么打开? 能不能分成多个 excel 文件再打包 zip ?
beginor
2021-08-13 07:53:01 +08:00
软件工程师,多动脑子,不是程序猿。
dcncy
2021-08-13 08:11:18 +08:00
之前做过一个 700w+的数据导出,每一行 40 多列。
使用的是 easyExcel 导的,分多个 excel,多个 sheet,多线程跑效率能快点。
janda
2021-08-13 16:30:18 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/795136

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX