3
我想用Apache POI閱讀大型Excel 2007文件。 Quick start guide指出應該使用File
來節省內存。如何用Apache POI懶洋洋地閱讀大型Excel 2007文件
當打開一個工作簿時,無論是的.xls HSSFWorkbook或.XLSX XSSFWorkbook,所述工作簿可以從文件或 的InputStream加載。使用文件對象允許更低的內存消耗, 而InputStream需要更多的內存,因爲它必須緩衝整個文件 。
我因此寫大約這樣的:
opcPackage = OPCPackage.open(file);
XSSFWorkbook workbook = new XSSFWorkbook(opcPackage);
XSSFSheet sheet = workbook.getSheetAt(0);
rows = sheet.rowIterator();
if (rows.hasNext()) {
Row row = rows.next();
System.out.println(row.getCell(1).getStringCellValue());
}
然而,結果在一個java.lang.OutOfMemoryError: Java heap space
對於具有多於約10000行的片材。
我希望迭代只是懶洋洋地加載那些要讀取的行,比如流。
如何解決大型Excel文件的內存問題?我可以用Apache POI懶洋洋地閱讀嗎?