使用EasyPoi輕松導(dǎo)入導(dǎo)出Excel文檔的方法示例
提到Excel的導(dǎo)入導(dǎo)出,大家肯定都知道alibaba開源的EasyExcel,該項(xiàng)目的github地址為:https://github.com/alibaba/easyexcel。
這個(gè)項(xiàng)目非常活躍,項(xiàng)目誕生的目的就是為了簡(jiǎn)化開發(fā)、降低內(nèi)存消耗。我項(xiàng)目中也用過(guò),但還是有一些槽點(diǎn)的,比如文檔很簡(jiǎn)陋,功能做的不完善,不支持圖片的讀取等。所以,今天給大家推薦另外一款Excel處理的工具:EasyPoi。
一、EasyPoi簡(jiǎn)介
官網(wǎng):http://www.afterturn.cn/
EasyPoi功能如同名字easy,主打的功能就是容易,讓一個(gè)沒(méi)見接觸過(guò)poi的人員 就可以方便的寫出Excel導(dǎo)出,Excel模板導(dǎo)出,Excel導(dǎo)入,Word模板導(dǎo)出,通過(guò)簡(jiǎn)單的注解和模板 語(yǔ)言(熟悉的表達(dá)式語(yǔ)法),完成以前復(fù)雜的寫法 ,不如poi那么自定義,不如jxl那么多標(biāo)簽,但是我們就是寫的少,寫的少。
EasyPoi的主要特點(diǎn)
- 設(shè)計(jì)精巧,使用簡(jiǎn)單
- 接口豐富,擴(kuò)展簡(jiǎn)單
- 默認(rèn)值多,write less do more
- spring mvc支持,web導(dǎo)出可以簡(jiǎn)單明了
二、EasyPoi的功能介紹
Excel自適應(yīng)xls和xlsx兩種格式,word只支持docx模式,功能還是挺豐富的。
1.Excel導(dǎo)入
- 注解導(dǎo)入
- Map導(dǎo)入
- 大數(shù)據(jù)量導(dǎo)入sax模式
- 導(dǎo)入文件保存
- 文件校驗(yàn)
- 字段校驗(yàn)
2.Excel導(dǎo)出
- 注解導(dǎo)出
- 模板導(dǎo)出
- html導(dǎo)出
3.Excel轉(zhuǎn)html
4.word導(dǎo)出
5.pdf導(dǎo)出
三、重點(diǎn)功能介紹
1.注解
EasyPoi起因就是Excel的導(dǎo)入導(dǎo)出,最初的模板是實(shí)體和Excel的對(duì)應(yīng),model--row,filed--col 這樣利用注解我們可以和容易做到excel到導(dǎo)入導(dǎo)出 經(jīng)過(guò)一段時(shí)間發(fā)展,現(xiàn)在注解有5個(gè)類分別是
- @Excel 作用到filed上面,是對(duì)Excel一列的一個(gè)描述
- @ExcelCollection 表示一個(gè)集合,主要針對(duì)一對(duì)多的導(dǎo)出,比如一個(gè)老師對(duì)應(yīng)多個(gè)科目,科目就可以用集合表示
- @ExcelEntity 表示一個(gè)繼續(xù)深入導(dǎo)出的實(shí)體,但他沒(méi)有太多的實(shí)際意義,只是告訴系統(tǒng)這個(gè)對(duì)象里面同樣有導(dǎo)出的字段
- @ExcelIgnore 和名字一樣表示這個(gè)字段被忽略跳過(guò)這個(gè)導(dǎo)導(dǎo)出
- @ExcelTarget 這個(gè)是作用于最外層的對(duì)象,描述這個(gè)對(duì)象的id,以便支持一個(gè)對(duì)象可以針對(duì)不同導(dǎo)出做出不同處理
2.Excel 模板
模板是處理復(fù)雜Excel的簡(jiǎn)單方法,復(fù)雜的Excel樣式,可以用Excel直接編輯,完美的避開了代碼編寫樣式的雷區(qū),同時(shí)指令的支持,也提了模板的有效性。就像下面這樣使用,具體用法請(qǐng)看文檔。
3.Excel<->Html的互轉(zhuǎn)
4.Word模板導(dǎo)出
5.圖片的導(dǎo)入導(dǎo)出
@Test//圖片導(dǎo)入 public void test() { try { ImportParams params = new ImportParams(); params.setNeedSave(true); List<CompanyHasImgModel> result = ExcelImportUtil.importExcel( new File(PoiPublicUtil.getWebRootPath("import/imgexcel.xls")), CompanyHasImgModel.class, params); for (int i = 0; i < result.size(); i++) { System.out.println(ReflectionToStringBuilder.toString(result.get(i))); } Assert.assertTrue(result.size() == 4); } catch (Exception e) { e.printStackTrace(); } } } //導(dǎo)出 @Excel(name = "公司LOGO", type = 2 ,width = 40 , height = 20,imageType = 1) private String companyLogo;
6.Excel大數(shù)據(jù)導(dǎo)出
大數(shù)據(jù)導(dǎo)出是當(dāng)我們的導(dǎo)出數(shù)量在幾萬(wàn),到上百萬(wàn)的數(shù)據(jù)時(shí),一次從數(shù)據(jù)庫(kù)查詢這么多數(shù)據(jù)加載到內(nèi)存然后寫入會(huì)對(duì)我們的內(nèi)存和CPU都產(chǎn)生壓力,這個(gè)時(shí)候需要我們像分頁(yè)一樣處理導(dǎo)出分段寫入Excel緩解Excel的壓力 EasyPoi提供的是兩個(gè)方法 強(qiáng)制使用 xssf版本的Excel 。具體代碼看文檔,我們看下資源占用即可:
多次測(cè)試用時(shí)統(tǒng)計(jì),速度還是可以接受的。
數(shù)據(jù)量 | 用時(shí) | 文件大小 | 列數(shù) |
---|---|---|---|
100W | 16.4s | 24.3MB | 5 |
100W | 15.9s | 24.3MB | 5 |
200W | 29.5s | 48.5MB | 5 |
100W | 30.8s | 37.8MB | 10 |
200W | 58.7s | 76.1MB | 10 |
7.大數(shù)據(jù)導(dǎo)出View的用法
Easypoi view 項(xiàng)目是為了更簡(jiǎn)單的方便搭建在導(dǎo)出時(shí)候的操作,利用spring mvc 的view 封裝,更加符合spring mvc的風(fēng)格。EasypoiBigExcelExportView 是針對(duì)大數(shù)據(jù)量導(dǎo)出特定的View,在跳轉(zhuǎn)到這個(gè)View的時(shí)候不需要查詢數(shù)據(jù),而且這個(gè)View自己去查詢數(shù)據(jù),用戶只要實(shí)現(xiàn)IExcelExportServer接口就可以了 。
總結(jié),Easypoi的功能強(qiáng)大,文檔和示例代碼豐富,大家在開發(fā)中如果有類似的需求,不妨一試。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot?整合?RabbitMQ?消息隊(duì)列?詳情
這篇文章主要介紹了Springboot整合RabbitMQ?消息隊(duì)列詳情,文章為榮啊主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08解決跨域請(qǐng)求,NG返回403(403并不一定是NG問(wèn)題)
這篇文章主要介紹了解決跨域請(qǐng)求,NG返回403(403并不一定是NG問(wèn)題),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12SpringBoot項(xiàng)目啟動(dòng)打包報(bào)錯(cuò)類文件具有錯(cuò)誤的版本 61.0, 應(yīng)為 52.0的解決
這篇文章主要給大家介紹了關(guān)于SpringBoot項(xiàng)目啟動(dòng)打包報(bào)錯(cuò)類文件具有錯(cuò)誤的版本 61.0, 應(yīng)為 52.0的解決方法,文中有詳細(xì)的排查過(guò)程和解決方法,通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11Json轉(zhuǎn)化為Java對(duì)象的實(shí)例詳解
這篇文章主要介紹了Json轉(zhuǎn)化為Java對(duì)象的實(shí)例詳解的相關(guān)資料,前后端數(shù)據(jù)交互的情況經(jīng)常會(huì)遇到Json串與java 對(duì)象的相互轉(zhuǎn)換方便操作,需要的朋友可以參考下2017-08-08