做項目遇到上傳excel并解析excel內(nèi)容組裝成結(jié)構(gòu)話json,網(wǎng)上查了很多方法,做了poi和easyExcel兩個方法的對比
兩者都可以解析excel文件,但是兩個也有不同:
一、poi
官方說明:https://poi.apache.org/components/index.html
A、03版excel和07版excel:
1)03版excel最多65536行,最大列數(shù)是256列,07版excel沒有限制;
2)文件后綴不同,一個xls,另一個是xlsx。
3)poi引入依賴不同
B、寫
(1)03版excel和07版excel生成的性能對比
程序執(zhí)行前時間戳作為begin,程序執(zhí)行后時間戳作為end,然后后者減前者除以1000并且double強轉(zhuǎn)獲得秒級時間。 最后可以看到后者的效率比前者低,但后者沒有最多65536行限制。
(2)為了讓XSSFWorkbook效率提升,用了Workbook第三個實現(xiàn)類SXSSFWorkbook。
這個實現(xiàn)原理其實就是兼顧前面兩者的優(yōu)點,默認把100條記錄保存到內(nèi)存中,然后寫入臨時excel文件,即一種流式計算,但需要注意的是一定要在程序結(jié)束的時候清除臨時文件。
C、讀
3.8版本的POI對excel的導出操作,一般只使用HSSFWorkbook以及 SXSSFWorkbook, HSSFWorkbook用來處理較少的數(shù)據(jù)量, SXSSFWorkbook用來處理大數(shù)據(jù)量以及超大數(shù)據(jù)量的導出,只是 SXSSFWorkbook只支持.xlsx格式,不支持.xls格式。
poi易造成內(nèi)存溢出
我們通過分析其源碼,得出其實現(xiàn)步驟為通過InputStream一行行讀取到TreeMap類型的HSSFRow結(jié)構(gòu)體中,因此當數(shù)據(jù)量大時就會造成內(nèi)存溢出。poi會將內(nèi)容全部加載到內(nèi)存
poi的使用:文章來源:http://www.zghlxwxcb.cn/news/detail-421423.html
1、引入jar包文章來源地址http://www.zghlxwxcb.cn/news/detail-421423.html
<dependencies> <dependency> <groupId>org.apache.poi</groupId> <artifactId>po
到了這里,關(guān)于java解析excel,poi和easyExcel的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!