2016-04-07 139 views
0

我使用的庫閱讀大量的Excel文件的.xlsx

org.apache.poi 


XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream); 

我想

org.xml.sax 

庫,但不能將其轉換成工作簿

注意:在最終結果我想XSSFWorkbook被退回

上面的代碼將失去內存,任何幫助將被讚賞 ThankQ提前

+1

「注意:最終結果我希望返回XSSFWorkbook」:這是不可能的。 XSSFWorkbook需要完全在內存中。嘗試使用SXSSFWorkbook https://poi.apache.org/spreadsheet/how-to.html#sxssf。 –

+0

這個問題是關於閱讀而不是寫作的,這是SXSSFWorkbook的全部內容。 – centic

回答

1

如果輸入數據對於可用內存太大,您有兩個選項。

一個)經由-Xmx java的命令行選項

b)中使用Streaming-API of POI提供更多的存儲器。

如果文件最終適合內存,選項a)將很容易做到。如果該文件對於可用物理內存來說太大,則需要查看流選項,尤其是示例XLSX2CSV顯示瞭如何從任意大的.xlsx文件讀取數據,雖然有些功能需要訪問多個單元格不可用。