我使用 apache poi 来读取和写入 excel。我可以毫无问题地做到这一点。但是在现有 excel 上写入大型 excel 时,我面临内存问题。下面更详细地解释
我有一个模板,其中列标题是彩色的,有些是合并的(我说的是一张纸中的 100 到 150 列),我大约有 10 张纸。
现在我从数据库读取数据并将数据填充到此 Excel 中。
现在,对于小数据集,我可以做到,但对于大数据集,它会抛出内存不足。
虽然我从数据库中以小块的形式获取数据,例如一次处理 1000 行数据,然后再次获取另一组数据。最大数据行数为每张纸 50,000 行,最小行数为每张纸一行
我读过有关 SXSSF 的内容,但问题是它不能在现有的 Excel 上进行编辑。
请让我知道您对如何解决此问题的想法。
有一些可用的选项,但没有一个是“灵丹妙药”的简单答案。不幸的是,Excel 文件格式确实需要相当多的内存才能使用。
- 增加 Java 的堆大小,以便它一次可以在内存中容纳更多内容
- 为您的服务器购买更多内存,然后增加堆大小。如今内存相当便宜,一个体面的程序员不需要花很多小时的工资来支付成本
- 使用不同的文件格式 - 例如 CSV 在内存占用方面非常轻
- Use the 低级 SAX API读取 .xlsx 文件,然后使用SXSSF无需太多缓冲即可再次将其写出。不过,需要大量的自定义编码,这比仅仅使用 HSSF/XSSF 需要做更多的工作
- 为 Apache POI 的内存改进做出贡献/赞助。 POI 是开源的,免费提供,并且完全由志愿者维护,因此,如果有什么事情对您很重要,您通常最好提供帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)