EXCEL导出慢的优化问题

  • Post author:
  • Post category:其他


最新接到了一个关于excel导出大批量数据时的优化任务,我们开始采用的是XSSFWorkbook来进行数据的导出,发现前端卡死,一直报400异常。

如图:

 XSSFWorkbook tempWorkBook = new XSSFWorkbook();

然后我去仔细看了下有关导出poi的几种方式:HSSFWorkbook、XSSFWorkbook、SXSSFWorkbook。

  1. HSSFWorkbook:针对是 EXCEL2003 版本,扩展名为 .xls;所以 此种的局限就是 导出的行数 至多为 65535 行,这种情况,因为行数不足七万行 ,所以 一般不会发生 内存不足的情况(OOM)。
  2. XSSFWorkbook:最多可以导出 104 万行,但是由于创建的 book sheet row cell 等,此时是存在内存的,而且并没有持久化,随着数据量增大 ,内存的需求量也就增大,这样就导致OOM 内存溢出。
  3. SXSSFWorkbook:SXSSFWorkbook的原理就是用硬盘空间换内存来达到避免OOM的情况,它是streaming版本的XSSFWorkbook,它只会保存最新的excel rows在内存里供查看,在此之前的excel rows都会被写入到硬盘里。

通过上面的了解,我们最后采用SXSSFWorkbook的方式来进行excel的导出,并解决了文件的导出极慢的问题。

如图:

SXSSFWorkbook tempWorkBook = new SXSSFWorkbook();



版权声明:本文为m0_51597273原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。