關于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