【问题标题】:poi read existing excel and edit with large datapoi 读取现有 excel 并使用大数据进行编辑
【发布时间】:2013-06-23 04:12:29
【问题描述】:

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

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

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

【问题讨论】:

  • 增加 Java 堆大小和/或为服务器购买更多内存?
  • 我知道,但我不想增加 Java 堆大小,请提出其他解决方案

标签: performance apache memory apache-poi


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多