首页 >> 精选知识 >

POI通用导出Excel(.xls(.xlsx)的方法)

2023-06-13 13:34:01 来源: 用户: 

大家好,综合小编来为大家讲解下POI通用导出Excel,.xls,.xlsx的方法这个很多人还不知道,现在让我们一起来看看吧!

HSSF:操作Excel 97(.xls)格式

XSSF:操作EXCEL 2007 OOXML(。xlsx)格式,而且操作Excel比HSSF占用内存多。

SXSSF:从POI3.8 beta3支持,基于XSSF,内存消耗低。

使用POI的HSSF对象,EXCEL 97(。xls)格式生成,生成的Excel不压缩直接导出。

在线问题:负载服务器在向应用服务器转发请求时受阻,内存溢出。

如果系统中有大量的报表导出,可以考虑使用POI的SXSSF进行EXCEL操作。

(相关资料图)

Excel 97(。xls)格式有其自身的限制,即每页不能超过65536页。

XSSF生成Excel 2007 OOXML(。xlsx)格式,并且行数增加,但是在导出过程中,内存占用率比HSSF高。

SXSSF是XSSF从3.8-beta3版本开始提供的低内存占用的操作EXCEL对象。原理是可以将内存中的EXCEL行设置或手动写入硬盘,这样内存中只保存少量EXCEL行进行操作。

EXCEL的压缩比极高,达到80%,12M的文件压缩后只有2M左右。如果不压缩,不仅会占用用户的带宽,还会长期占用负载服务器(apache)和应用服务器之间的连接(二进制流转发)。

结果,负载服务器的请求被阻塞,不能提供服务。

一定要注意文件流的关闭。

防止前台(页面)连续触发EXCEL的导出。

1.通用核心导出工具类ExcelUtil.java

//导出配件列表@ request mapping(value=' partExport ')@ response body public void partexportttpservletresponse response){ JSON array ja=ptmporderservice。selectstatexport();//获取业务数据集MapString,String head map=ptmporderservice。getpartstatheadmap();//获取属性-列头字符串标题='配件统计表;excelutil。downloadexcelfile(标题、headMap、ja、回复);}3.前端页面的写法(不要用异步方式请求,

dependency groupIdorg.apache.poi/groupId artifactIdpoi-ooxml/artifactId version3.14/version/dependency5.本地测试

将10w条数据导出到本地硬盘中,HSSF方式用时14s左右,SXSSF方式用时24s左右,尽管如此,但建议使用SXSSF导出.xlsx的excel.

之所以使用JSONArray作为数据集,而没有采用java的集合类,是因为JSONObject 在获取数据的时候是采用get(key)的方式,正好与属性列对应,这样灵活性高,

属性列不必与java对象的字段匹配。而若使用java类,则要应用反射,拼凑get方法,这样更复杂点。

本文[高级伪原创标题]到此分享完毕,希望对大家有所帮助。

  免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!

 
分享:
最新文章