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

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

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

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

5341 次点击
所在节点    Java
53 条回复
mhycy
2021-08-11 17:28:07 +08:00
先不说导出,就是成功导出了,这千万级数据的 Excel 有办法开么
Kimen
2021-08-11 17:31:08 +08:00
@mhycy 哎,客户要求的,之前 100w 试过是可以打开的
fengpan567
2021-08-11 17:45:40 +08:00
为什么要搞一个 1000W 大小的 list 出来,不能分页查吗?
fox1751
2021-08-11 17:49:15 +08:00
搞明白客户的真实需求吧.
7925250
2021-08-11 17:53:05 +08:00
可以改造成流式导出,一千万的数据 (1.3GB) 导出,耗时 2 分钟
wangkun025
2021-08-11 18:03:53 +08:00
Excel 目前单个 sheet 只能容纳 104 万行。不过可以分 sheet,sheet 数量没有限制。
chendy
2021-08-11 18:22:05 +08:00
直接走数据库查询导出 csv 吧
MidGap
2021-08-11 18:30:42 +08:00
曾经踩过内存溢出的坑,就是用使用 SXSSFWorkbook 类这个方法解决的,但是这样 IO 好像就会变密集,慢也是无法避免的。。 本身这个需求感觉就很扯淡,使劲 battle 一下多好~ 或者用 csv 啊,简单多了
MidGap
2021-08-11 18:31:42 +08:00
@fengpan567 excel 的 append 操作很坑,要先读到内存再往下写我记得
aguesuka
2021-08-11 18:48:23 +08:00
直接导出 csv 文件, 能提出导出 1000 万行 excel 数据的客户估计也分不清这两种数据的区别
franklinray
2021-08-11 18:52:06 +08:00
导出 1000 万行 excel,一般电脑都打不开吧。打开了谁能去查看数据……如果只是为了导出数据,然后导入其他系统做分析,换成 csv 不好吗
binsys
2021-08-11 19:10:06 +08:00
我处理大量 EXCEL 数据用 MS 的 OPENXMLSDK ,在直接以 XML SAX 形式写入
pengtdyd
2021-08-11 19:36:26 +08:00
什么样的电脑可以打开 1000w 的 excel,很难想象
jzphx
2021-08-11 19:47:33 +08:00
easyexcel 尝试用过了吗
liuxu
2021-08-11 21:24:46 +08:00
这种阔气的问题,只有 java 节点提的出来
xuanbg
2021-08-11 21:40:30 +08:00
50 万行的 excel,我 i9/32G 的 mbp 打开是能打开,但很费劲。100 万行是想都不敢想,何况 1000 万行。SB 客户不能惯着
7228897
2021-08-11 21:51:44 +08:00
单位的电脑 4G 内存,打开 40 万条的月数据已经卡的不能动了
chenqh
2021-08-11 21:54:30 +08:00
1KW 估计内存会炸把
EscYezi
2021-08-11 23:45:05 +08:00
之前用 easyExcel 看官网说是擅长导出大量数据,楼主可以体验一下🤣
jorneyr
2021-08-12 08:06:10 +08:00
这是要把整个数据库都给搬家了

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

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

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

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

© 2021 V2EX