3
我試圖爲android創建一個非常基本的電子表格(XLS)查看器。 雖然使用Apache POI API創建一個新的XSSFWorkbook對象時,我收到了內存不足的錯誤:當在Android上用Apache poi讀取xls時內存不足
mWorkBook = new XSSFWorkbook(file);
如何能抓住特定的行/細胞 .xls的內部,而不將整個文件加載到內存中?
我試圖爲android創建一個非常基本的電子表格(XLS)查看器。 雖然使用Apache POI API創建一個新的XSSFWorkbook對象時,我收到了內存不足的錯誤:當在Android上用Apache poi讀取xls時內存不足
mWorkBook = new XSSFWorkbook(file);
如何能抓住特定的行/細胞 .xls的內部,而不將整個文件加載到內存中?
電子表格不適合隨機訪問。電子表格不是爲此目的設計的原因是因爲單元格可以是任意長的,並且行可以具有任意數量的單元格。如果不是這種情況,並且每行都有固定的字節大小,那麼您可以跳過讀取文件的第一個字節。
如果隨機訪問是您的主要用例,我會建議將數據加載到小型數據庫中。看看H2。
如何抓住特定的行/單元格?我認爲這個答案只是讀取整個文件。 – Habbert
它讀取整個文件,但它不會將整個內容加載到內存中,並且可以關閉流而不讀取所有行。即一旦你閱讀了所需的行,你可以關閉它。查看Apache POI中的流媒體API。 http://poi.apache.org/spreadsheet/index.html – Samuel
但它可以開始閱讀除第一行以外的其他地方嗎?如果我在文件中途需要連續行,該怎麼辦?閱讀整個文件到那一點,以獲得該行將無法正常工作。 – Habbert