1

我使用 apache poi 来读取和写入 excel。我可以毫无问题地做到这一点。但是在现有的 excel 上编写大型 excel 时我面临内存问题。下面更详细地解释我有模板,其中列标题是彩色的合并(我在一张纸上谈论 100 到 150 列)这我大约有 10 张纸。现在我从数据库中读取数据并将数据填充到这个excel中。现在对于小型数据集,我可以做到,但对于大型数据集,它会耗尽内存。虽然我以小块的形式从 db 中获取数据,例如 1000 行数据,同时处理 1000 行并再次获得另一组数据。每张表的最大数据行为 50,000 行,每张表中的最小行数为 1 行

我已经阅读了有关 SXSSF 的信息,但问题是它不能对现有的 excel 进行编辑。

请让我知道您对如何解决此问题的想法。

4

1 回答 1

1

有几个选项可用,但没有一个是“灵丹妙药”的简单答案。不幸的是,Excel 文件格式确实需要相当多的内存才能使用。

  1. 增加给 Java 的堆大小,以便它一次可以容纳更多的内存
  2. 为您的服务器购买更多内存,然后增加堆大小。这些天内存相当便宜,一个体面的程序员不需要很多小时的工资来支付成本
  3. 使用不同的文件格式 - 例如 CSV 在内存占用方面非常轻量级
  4. 使用低级 SAX API读取 .xlsx 文件,然后使用SXSSF再次将其写出,无需太多缓冲。虽然需要相当多的自定义编码,但比仅使用 HSSF/XSSF 为您做更多的工作
  5. 贡献/赞助内存改进对 Apache POI 的贡献。POI 是开源的、免费提供的,并且完全由志愿者维护,所以如果有什么对您很重要,您通常最好提供帮助!
于 2013-06-26T14:33:20.227 回答