java - Apache POI 3.16 - 使用 XSSF 读取 75K 行 EXCEL (.xlsx) 时出现 OutOfMemory 异常

标签 java excel apache apache-poi

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

线程“main”中出现异常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 文件,请告诉我。

最佳答案

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

关于java - Apache POI 3.16 - 使用 XSSF 读取 75K 行 EXCEL (.xlsx) 时出现 OutOfMemory 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46005090/

相关文章:

apache - htaccess 如果某个文件存在则强制使用 SSL

java - 如何使用 RestTemplate 在 Java 中仅解析 Web JSON 的一部分?

java - 通过从其他列表添加对象来从合并的列表中删除对象

java - jQuery.ajax servlet 返回一个文件

vba - 如何在不选择形状的情况下使用 VBA 在 Excel 中更改文本大小?

java - Tomcat Workers - 连接 Tomcat 和 Apache

java.lang.RuntimeException : Unable to instantiate activit

java - 在java中从json数组生成Excel工作表报告

vba - Excel VBA - 在范围内增加列引用

apache - 避免nodejs和apache的80端口冲突