poi读取现有excel并使用大数据进行编辑

时间:2013-06-26 06:29:35

标签: performance apache memory apache-poi

我使用apache poi来读取和写入excel。我能够毫无问题地做到这一点。但是我在现有excel上编写大型excel时面临内存问题。下面将详细介绍 我有模板,其中列标题是彩色的,有些是合并的(我在一张纸上谈论100到150列)这个我大概有10张左右。 现在我从数据库中读取数据并将数据填充到此excel中。 现在我能够做的小数据集,但对于大型数据集,它会抛出内存。 虽然我以小块的方式从数据库中获取数据,例如1000行数据,然后处理1000并再次得到另一组。 Maxiumn数据行将为每张50,000行,而minumun行将在每张表中为一行

我已经阅读过有关SXSSF的内容,但问题是它不能在现有的Excel上进行编辑。

请让我知道你如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

有几种选择,但没有一种是“银弹”简单的答案。遗憾的是,Excel文件格式确实需要相当多的内存才能使用。

  1. 增加给Java的堆大小,以便它一次可以在内存中保存更多
  2. 为您的服务器购买更多内存,然后增加堆大小。如今,内存相当便宜,并且不需要花费很多时间来支付成本的程序员
  3. 使用不同的文件格式 - 例如,CSV在内存占用方面非常轻量级
  4. 使用low level SAX API读取.xlsx文件,然后使用SXSSF再次将其写出来,而无需太多缓冲。虽然需要相当多的自定义编码,但比使用HSSF / XSSF还要多得多。
  5. 贡献/赞助内存改进对Apache POI的贡献。 POI是开源的,免费提供,并且完全由志愿者维护,所以如果对你很重要,你通常最好帮忙!