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

时间:2017-09-01 17:12:41

标签: java excel apache apache-poi

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

线程中的异常" main" java.lang.OutOfMemoryError:Java堆空间     at com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl.createChunk(Unknown Source)

我使用以下代码读取excel文件,当前分配给Heap的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文件的库或框架,请告诉我。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

你必须使用流媒体方法来处理这么大的文件,

请参阅此链接了解详情:here