天天看點

POI操作大資料量Excel時,new SXSSFWorkbook(1000)執行個體化失敗問題解決

項目上使用POI導出資料庫大資料量為Excel時,發現代碼運作時 執行個體化工作簿 失敗!

SXSSFWorkbook workbook = new SXSSFWorkbook(100);
           

trycatch問題代碼後,在debug中也并未進入異常處理,而是直接進入了finally

最後發現問題所在:缺少SXSSF所依賴的操作xml的相關jar包!

 Apache POI操作Excel對象 

 1:HSSF:操作Excel 2007之前版本(.xls)格式,xls格式的excel(最大行數65536行,最大列數256列) 

 2:XSSF:操作Excel 2007及之後版本(.xlsx)格式,.xlsx格式的excel(最大行數1048576行,最大列數16384列)

 3:SXSSF:從POI3.8 beta3開始支援,基于XSSF,當資料量過大導緻記憶體占用大于執行個體化時設定的初始值時,會将資料持久化到硬碟,進而避免出現記憶體溢出問題。

使用SXSSF實作大資料量的excel導出,導出的檔案為.xlsx格式(2007)的excel,而.xlsx是用新的基于XML的壓縮檔案格式取代了原.xls(2003)專有的預設檔案格式,使其占用空間更小,可以向下相容xls。

是以,不光要導入poi的SXSSF相關的jar包,而且還要導入SXSSF所依賴的操作xml的jar包!

    1:poi-3.10-FINAL-20140208.jar

    2:poi-ooxml-3.10-FINAL-20140208.jar

    3:poi-ooxml-schemas-3.10-FINAL-20140208.jar

    4:dom4j-1.6.1.jar

    5:xmlbeans-2.3.0.jar

關于使用POI導出大資料量Excel的實作,請看我之前的一篇博文(代碼注釋詳細工整,并附有源碼下載下傳):

基于Apache POI導出大資料量Excel的實作