java.lang.OutOfMemoryError:大型Excel文件

时间:2017-12-19 09:10:52

标签: java apache-poi

我正在使用Apache POI来读取excel文件。我的文件大约是100MB,我在加载工作簿时得到了这个java.lang.OutOfMemoryError:Java堆

XSSFWorkbook workbook = new XSSFWorkbook(excelFilePath);

我的计算机内存为8GB,因此无法使用-Xmx太大。所以我的问题是如何处理这个错误?

修改

我的数据样本(我的数据大约是1087490行):

enter image description here

1 个答案:

答案 0 :(得分:5)

首先 - 您必须确保您的文件在该工具明确定义的限制范围内 - 请参阅here

除此之外,对于较大的文件耗尽内存似乎是一个相当普遍的问题,一种解决方案是“手动”处理XML数据:

  

如果内存占用是个问题,那么对于XSSF,您可以获取基础XML数据并自行处理。这适用于愿意学习.xlsx文件的一些低级结构的中间开发人员,以及在java中处理XML的人。它使用起来比较简单,但需要对文件结构有基本的了解。提供的优势是您可以读取内存占用相对较小的XLSX文件。

(引自here