EXCEL导出慢的优化问题
最新接到了一个关于excel导出大批量数据时的优化任务,我们开始采用的是XSSFWorkbook来进行数据的导出,发现前端卡死,一直报400异常。
如图:
XSSFWorkbook tempWorkBook = new XSSFWorkbook();
然后我去仔细看了下有关导出poi的几种方式:HSSFWorkbook、XSSFWorkbook、SXSSFWorkbook。
- HSSFWorkbook:针对是 EXCEL2003 版本,扩展名为 .xls;所以 此种的局限就是 导出的行数 至多为 65535 行,这种情况,因为行数不足七万行 ,所以 一般不会发生 内存不足的情况(OOM)。
- XSSFWorkbook:最多可以导出 104 万行,但是由于创建的 book sheet row cell 等,此时是存在内存的,而且并没有持久化,随着数据量增大 ,内存的需求量也就增大,这样就导致OOM 内存溢出。
- SXSSFWorkbook:SXSSFWorkbook的原理就是用硬盘空间换内存来达到避免OOM的情况,它是streaming版本的XSSFWorkbook,它只会保存最新的excel rows在内存里供查看,在此之前的excel rows都会被写入到硬盘里。
通过上面的了解,我们最后采用SXSSFWorkbook的方式来进行excel的导出,并解决了文件的导出极慢的问题。
如图:
SXSSFWorkbook tempWorkBook = new SXSSFWorkbook();
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
