永发信息网

java poi Excel大数据量导入怎么提高速度

答案:2  悬赏:0  手机版
解决时间 2021-03-24 14:09
java poi Excel大数据量导入怎么提高速度
最佳答案
记得有个属性,

POI3.8的SXSSF包是XSSF的一个扩展版本,支持流处理,在生成大数据量的电子表格且堆空间有限时使用。SXSSF通过限制内存中可访问的记录行数来实现其低内存利用,当达到限定值时,新一行数据的加入会引起老一行的数据刷新到硬盘。
比如内存中限制行数为100,当行号到达101时,行号为0的记录刷新到硬盘并从内存中删除,当行号到达102时,行号为1的记录刷新到硬盘,并从内存中删除,以此类推。
rowAccessWindowSize代表指定的内存中缓存记录数,默认为100,此值可以通过
new SXSSFWorkbook(int rowAccessWindowSize)或SXSSFSheet.setRandomAccessWindowSize(int windowSize)来设置。
全部回答
这个量太大,确实没法子
~~~~~~
最近在利用poi往excel中写入大量数据时,发现excel2003最多只支持65535条,大量数据时容易造成oom,上网查了一下api,发现目前对于2003,每个sheet最多支持65535条,若数据量远超65535,建议分sheet处理,而poi3.8之后,出现了SXSSFWorkbook,可以支持大数据量的写入excel操作,但是目前只支持excel2007
HSSF是POI工程对Excel 97(-2007)文件操作的纯Java实现
XSSF是POI工程对Excel 2007 OOXML (.xlsx)文件操作的纯Java实现
从POI 3.8版本开始,提供了一种基于XSSF的低内存占用的API----SXSSF
SXSSF通过一个滑动窗口来限制访问Row的数量从而达到低内存占用的目录,XSSF可以访问所有行。旧的行数据不再出现在滑动窗口中并变得无法访问,与此同时写到磁盘上。
在自动刷新的模式下,可以指定窗口中访问Row的数量,从而在内存中保持一定数量的Row。当达到这一数量时,在窗口中产生新的Row数据,并将低索引的数据从窗口中移动到磁盘中。
或者,滑动窗口的行数可以设定成自动增长的。它可以根据需要周期的根据一次明确的flushRow(int keepRows)调用来进行修改。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
帮忙看看这件水貂质量好不好
父母欠债以法律子女有责任还吗,具体的法律条
本人网贷到期了,求解救,急需1-2万上岸,求
如何发展身体协调性?
水晶绒起球吗
社会矛盾预防化解公安派出所应该怎么做
试用分数与除法的关系以及商不变的规律推导出
哪位朋友知道韩国维欧维(VOV)化妆品的,效果
请问哪位,知道赵玲珑(高中毕业山东枣庄第三
=IF(D4=0,"",IF(J4="",I4-AD4,I4-J4))和=IF(D
必达智能门锁操作员密码丢失.没有权限进入更
德国贝格种植牙好还是瑞士3ci好
哪种死法最舒服,最快?安乐死是什么样的?
我的脸为什么每天都这样的红。
海尔冰柜故障上冷下不冷冻
推荐资讯
div中的元素怎样能够浮动到底层
神明小胄小鱼的图腾印记是什么部落
震泽到淮安怎么坐车
人不在家,就我家跳闸多日(不是家里的空气开
河南开封寺智能道士
最终幻想13 最终boss怎么打
1.25乘二点5×6又五分之一的简便运算
0.6比0.2,4分之3比4分之一相等吗?
无线路由器每换一个IP地址需要重新设置吗
小村村地址在什么地方,想过去办事,
求一首思念儿子的诗句带有智和轩的
求一部95后青春爱情浪漫电影,谢谢
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?