天天看點

EasyExcel使用

Java 領域解析、生成 Excel 比較有名的架構有 Apache poi、jxl 等。但他們都存在一個嚴重的問題就是非常的耗記憶體。如果你的系統并發量不大的話可能還行,但是一旦并發上來後一定會 OOM 或者 JVM 頻繁的 FULL GC。

EasyExcel 是阿裡巴巴開源的一個 excel 處理架構,以使用簡單、節省記憶體著稱。 EasyExcel 能大大減少占用記憶體的主要原因是在解析 Excel 時沒有将檔案資料一次性全部加載到記憶體中,而是從磁盤上一行行讀取資料,逐個解析。

EasyExcel 采用一行一行的解析模式,并将一行的解析結果以觀察者的模式通知處理(AnalysisEventListener)。

簡單地了解:可以友善、快速的讀取、寫入 execl 内容。

【官方文檔位址:】 https://alibaba-easyexcel.github.io/index.html https://www.yuque.com/easyexcel

資料導入:減輕錄入工作量

資料導出:統計資訊歸檔

資料傳輸:異構系統之間資料傳輸

EasyExcel優勢:

注解式自定義操作。 輸入輸出簡單,提供輸入輸出過程的接口 支援一定程度的單元格合并等靈活化操作

@ExcelProperty:指定目前字段對應 excel 中的那一列。可以根據名字或者Index去比對。當然也可以不寫,預設第一個字段就是index=0,以此類推。千萬注意,要麼全部不寫,要麼全部用index,要麼全部用名字去比對。千萬别三個混着用,除非你非常了解源代碼中三個混着用怎麼去排序的。

@ExcelIgnore:預設所有字段都會和excel去比對,加了這個注解會忽略該字段

@DateTimeFormat:日期轉換,用 String 去接收 excel 日期格式的資料會調用這個注解。裡面的 value 參照 java.text.SimpleDateFormat

@NumberFormat:數字轉換,用 String 去接收 excel 數字格式的資料會調用這個注解。裡面的 value 參照 java.text.DecimalFormat

@ExcelIgnoreUnannotated:預設不加 ExcelProperty 的注解的都會參與讀寫,加了不會參與

@ExcelProperty注解也可以用index進行索引設定表頭順序

建立Controller,通路接口下載下傳導出Excel

導出結果

EasyExcel使用