2013-06-12 26 views
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懶洋洋地閱讀嗎?

回答