关于poi、jxl和esayExcel的介绍自行百度。
jxl最多支持03版excel,所以单个sheet页面最多只能导出65536条数据。
我直接将excel导入到浏览器并打开,以下统计导出时长指将数据从数据库查询,并写入到excel的过程。不包括打开excel所消耗的时间
为了接近真实场景,我建了一个表,一共有32个字段,其中2个id:一个自增长、一个UUID,10个int型字段,10个String字段,10个datatime字段;导出的excel包含了32个字段
我每次导出一个excel后,直接将jvm的内存清空,再进行下一个excel的导出,保证导出excel不受其它线程的影响
我只是为了比较性能,所以没有对excel的样式进行过多的渲染
poi方式,我使用的是刷新硬盘的方式,数据量大于设置的值,就将内存中的数据刷新到硬盘,降低OOM的概率,同时也增加了导出效率
1.pom依赖
以下是poi、jxl和esayExcel的全部依赖
1
2
3 org.apache.poi
4 poi
5 ${poi.version}
6
7
8
9 org.apache.poi
10 poi-ooxml
11 ${poi.version}
12
13
14
15
16 net.sourceforge.jexcelapi
17 jxl
18 2.6.10
19
20
21
22
23 com.alibaba
24 easyexcel
25 1.1.2-beat1
26
27
2.页面
由于是直接将excel通过response相应的方式写入到内存,然后在浏览器端打开,所以页面部分不能用ajax请求
1
2
3 poi导出
4 jxl导出
5 esayExcel导出
6