天天看點

Execl導出大量資料出現記憶體溢出的bug,解決方法

當資料量超出65536條後,在使用HSSFWorkbook或XSSFWorkbook,程式會報OutOfMemoryError:Javaheap space異常

解決方法是:從POI 3.8版本開始,提供了一種基于XSSF的低記憶體占用的API----SXSSFWorkbook。

SXSSFWorkbook-官方解釋:實作“BigGridDemo”政策的流式XSSFWorkbook版本。這允許寫入非常大的檔案而不會耗盡記憶體,因為任何時候隻有可配置的行部分被儲存在記憶體中。您可以提供用作書面資料基礎的模闆工作簿。有關詳細資訊,請參見https://poi.apache.org/spreadsheet/how-to.html#sxssf。

例如:

SXSSFWorkbook sxssfWorkbook = new SXSSFWorkbook();
 SXSSFSheet sheet = sxssfWorkbook.createSheet("sheet1");
 sheet.setDefaultColumnWidth(22);
 SXSSFRow rootRow = sheet.createRow(0);
 sxssfWorkbook.write(outputStream);
 sxssfWorkbook.close();
           

繼續閱讀