java poi 生成Excel 速度非常慢,求优化方案?数据才到2000左右的时候就开始变慢了。。

java poi 生成Excel 速度非常慢,求优化方案?数据才到2000左右的时候就开始变慢了。。,第1张

发现你问题中睁的所在了,你把过多的可重用的东西卸写在了循环内

HSSFCellStyle cellStyle = wb.createCellStyle()

HSSFDataFormat format = wb.createDataFormat()

cellStyle.setDataFormat(format.getFormat("@"))

// HSSFRow row = sheet.createRow(i+2)//这句不可重森培旅用

HSSFCell policyNoCell = row.createCell((short) 0)

policyNoCell.setCellStyle(cellStyle)

policyNoCell.setCellValue(new HSSFRichTextString(rs.getString(3)))//这句不可重用

你这个完全可以卸载循环外啊,creat这么多,肯定占内存

就算你有多个style,你也可以只需要creat一次,然后反复调用就好了

切记,以后再代码设计中,一定要考虑最大可能的重用,而不是每次需要去创造(new(此凳)、crate什么的),这是一种思维,祝你好运

记得做运手有个属性,

POI3.8的SXSSF包是XSSF的一个扩展版本,支持流处理,在生成大数据量的电子表格且堆空间有限时使用。SXSSF通过限制内存中可访悄闹问的记录行数来实现其低内存利用,当达到限定值时,新一行数据的加入会引起老一行的数据刷新到硬盘。

比如内存中限制行数为100,当行号到达101时,行纯嫌号为0的记录刷新到硬盘并从内存中删除,当行号到达102时,行号为1的记录刷新到硬盘,并从内存中删除,以此类推。

rowAccessWindowSize代表指定的内存中缓存记录数,默认为100,此值可以通过

new SXSSFWorkbook(int rowAccessWindowSize)或SXSSFSheet.setRandomAccessWindowSize(int windowSize)来设置。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/yw/12525023.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-26
下一篇2025-08-26

发表评论

登录后才能评论

评论列表(0条)

    保存