【问题标题】:Apache POI 3.16 - OutOfMemory Exception while reading 75K rows EXCEL (.xlsx) using XSSFApache POI 3.16 - 使用 XSSF 读取 75K 行 EXCEL (.xlsx) 时出现 OutOfMemory 异常
【发布时间】:2017-09-01 17:12:40
【问题描述】:

根据要求,我的应用程序首先需要读取一个 Excel 文件,该文件将包含大约 75K-100K 行和 90 列。但是当 XSSFWorkbook 加载 pkg/文件时,我在第 2 行遇到了以下异常

线程“主”java.lang.OutOfMemoryError 中的异常:Java 堆空间 在 com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl.createChunk(未知来源)

我正在使用以下代码读取 excel 文件,当前分配给堆的 1 GB 内存,我什至无法读取 15K 行文件。

1 OPCPackage pkg = OPCPackage.open("C:/Users/Admin/eclipse-workspace/HelloWorld/src/data.xlsx"); 2 XSSFWorkbook wb = new XSSFWorkbook(pkg);

//读取需要更新的电子表格 1 FileInputStream inputFile = new FileInputStream("C:/Users/Admin/eclipse-workspace/HelloWorld/src/data.xlsx");
2 XSSFWorkbook wb = new XSSFWorkbook(inputFile);

如果有任何解决方案,或者是否有任何其他库或框架可用于 Java 读取大型 Excel 文件,请告诉我。

【问题讨论】:

    标签: java excel apache apache-poi


    【解决方案1】:

    您可以参考这里:What are the Xms and Xmx parameters when starting JVMs? 并设置 java 内存参数以避免内存不足错误。

    【讨论】:

      【解决方案2】:

      对于这么大的文件,您必须使用流式传输方法,

      更多详情请参考此链接:here

      【讨论】:

        猜你喜欢
        • 2012-05-30
        • 2011-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多