天天看点

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();
           

继续阅读