标签: java apache-poi
我正在使用Apache POI来读取excel文件。我的文件大约是100MB,我在加载工作簿时得到了这个java.lang.OutOfMemoryError:Java堆
XSSFWorkbook workbook = new XSSFWorkbook(excelFilePath);
我的计算机内存为8GB,因此无法使用-Xmx太大。所以我的问题是如何处理这个错误?
修改
我的数据样本(我的数据大约是1087490行):
答案 0 :(得分:5)
首先 - 您必须确保您的文件在该工具明确定义的限制范围内 - 请参阅here。
除此之外,对于较大的文件耗尽内存似乎是一个相当普遍的问题,一种解决方案是“手动”处理XML数据:
如果内存占用是个问题,那么对于XSSF,您可以获取基础XML数据并自行处理。这适用于愿意学习.xlsx文件的一些低级结构的中间开发人员,以及在java中处理XML的人。它使用起来比较简单,但需要对文件结构有基本的了解。提供的优势是您可以读取内存占用相对较小的XLSX文件。
(引自here)