使用EasyPoi輕鬆匯入匯出Excel文件的方法示例
提到Excel的匯入匯出,大家肯定都知道alibaba開源的EasyExcel,該專案的github地址為:https://github.com/alibaba/easyexcel。
這個專案非常活躍,專案誕生的目的就是為了簡化開發、降低記憶體消耗。我專案中也用過,但還是有一些槽點的,比如文件很簡陋,功能做的不完善,不支援圖片的讀取等。所以,今天給大家推薦另外一款Excel處理的工具:EasyPoi。
一、EasyPoi簡介
官網:http://www.afterturn.cn/
文件:http://easypoi.mydoc.io/
EasyPoi功能如同名字easy,主打的功能就是容易,讓一個沒見接觸過poi的人員 就可以方便的寫出Excel匯出,Excel模板匯出,Excel匯入,Word模板匯出,通過簡單的註解和模板 語言(熟悉的表示式語法),完成以前複雜的寫法 ,不如poi那麼自定義,不如jxl那麼多標籤,但是我們就是寫的少,寫的少。
EasyPoi的主要特點
- 設計精巧,使用簡單
- 介面豐富,擴充套件簡單
- 預設值多,write less do more
- spring mvc支援,web匯出可以簡單明瞭
二、EasyPoi的功能介紹
Excel自適應xls和xlsx兩種格式,word只支援docx模式,功能還是挺豐富的。
1.Excel匯入
- 註解匯入
- Map匯入
- 大資料量匯入sax模式
- 匯入檔案儲存
- 檔案校驗
- 欄位校驗
2.Excel匯出
- 註解匯出
- 模板匯出
- html匯出
3.Excel轉html
4.word匯出
5.pdf匯出
三、重點功能介紹
1.註解
EasyPoi起因就是Excel的匯入匯出,最初的模板是實體和Excel的對應,model--row,filed--col 這樣利用註解我們可以和容易做到excel到匯入匯出 經過一段時間發展,現在註解有5個類分別是
- @Excel 作用到filed上面,是對Excel一列的一個描述
- @ExcelCollection 表示一個集合,主要針對一對多的匯出,比如一個老師對應多個科目,科目就可以用集合表示
- @ExcelEntity 表示一個繼續深入匯出的實體,但他沒有太多的實際意義,只是告訴系統這個物件裡面同樣有匯出的欄位
- @ExcelIgnore 和名字一樣表示這個欄位被忽略跳過這個導匯出
- @ExcelTarget 這個是作用於最外層的物件,描述這個物件的id,以便支援一個物件可以針對不同匯出做出不同處理
2.Excel 模板
模板是處理複雜Excel的簡單方法,複雜的Excel樣式,可以用Excel直接編輯,完美的避開了程式碼編寫樣式的雷區,同時指令的支援,也提了模板的有效性。就像下面這樣使用,具體用法請看文件。
3.Excel<->Html的互轉
4.Word模板匯出
5.圖片的匯入匯出
@Test//圖片匯入 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(); } } } //匯出 @Excel(name = "公司LOGO",type = 2,width = 40,height = 20,imageType = 1) private String companyLogo;
6.Excel大資料匯出
大資料匯出是當我們的匯出數量在幾萬,到上百萬的資料時,一次從資料庫查詢這麼多資料載入到記憶體然後寫入會對我們的記憶體和CPU都產生壓力,這個時候需要我們像分頁一樣處理匯出分段寫入Excel緩解Excel的壓力 EasyPoi提供的是兩個方法 強制使用 xssf版本的Excel 。具體程式碼看文件,我們看下資源佔用即可:
多次測試用時統計,速度還是可以接受的。
資料量 | 用時 | 檔案大小 | 列數 |
---|---|---|---|
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.大資料匯出View的用法
Easypoi view 專案是為了更簡單的方便搭建在匯出時候的操作,利用spring mvc 的view 封裝,更加符合spring mvc的風格。EasypoiBigExcelExportView 是針對大資料量匯出特定的View,在跳轉到這個View的時候不需要查詢資料,而且這個View自己去查詢資料,使用者只要實現IExcelExportServer介面就可以了 。
總結,Easypoi的功能強大,文件和示例程式碼豐富,大家在開發中如果有類似的需求,不妨一試。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。