- 官方網址:https://www.yuque.com/easyexcel/doc/easyexcel
- 應用場景
- 資料匯入:減少錄入作業量
- 資料匯出:統計資訊歸檔
- 資料傳輸:異構系統之間資料傳輸
- EasyExcel特點
- 它是阿里巴巴開源的一個excel處理框架,
以使用簡單、節省記憶體著稱,EasyExcel能大量減少占用記憶體的主要原因是在決議Excel時沒有將檔案資料一次性全部加載到記憶體中,而是從磁盤中一行行讀取資料,逐個決議, - EasyExcel采用一行一行的決議模式,并將一行的決議結果以觀察者的模式通知處理(AnalysisEventListener)
- 它是阿里巴巴開源的一個excel處理框架,
- EasyExcel寫操作
- 匯入依賴的版本對應關系(版本慎重選擇,否則發生沖突)
<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.1</version> </dependency> <!--xls--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <!--xlsx--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency> - 創建一個與excel表格欄位相對應的物體類(欄位==屬性)
package com.xsha.demo.excel; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; @Data public class MyData { // 設定excel表表頭 @ExcelProperty(value = "https://www.cnblogs.com/aitiknowledge/archive/2022/02/28/學生編號") private String sno; @ExcelProperty(value = "https://www.cnblogs.com/aitiknowledge/archive/2022/02/28/學生姓名") private String sname; } - 代碼測驗
// 實作EasyExcel寫操作 @Test public void writeExcel() { // 1.設定寫入檔案夾地址和excel檔案名稱 String filename = "存放檔案的絕對路徑\\write.xlsx"; // 2.準備資料集 List<MyData> list = new ArrayList<>(); for (int i = 0; i < 5; i++) { MyData data = https://www.cnblogs.com/aitiknowledge/archive/2022/02/28/new MyData(); data.setSno(i); data.setSname("xiansen"+i); list.add(data); } // 3.呼叫EasyExcel里面的方法實作寫的操作,第一個引數是檔案路徑,第二個引數是物體類名稱 EasyExcel.write(filename, MyData.class).sheet("學生串列").doWrite(list); }
- 匯入依賴的版本對應關系(版本慎重選擇,否則發生沖突)
- EasyExcel讀操作
- 匯入的依賴及版本控制是一樣的
- 創建的物體類也是excel表格欄位一致,只不過在注解中增加一個屬性,指定表格的第幾個欄位(從0開始)
package com.xsha.demo.excel; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; @Data public class MyData { // 設定excel表表頭 @ExcelProperty(value = "https://www.cnblogs.com/aitiknowledge/archive/2022/02/28/學生編號", index = 0) private Integer sno; @ExcelProperty(value = "https://www.cnblogs.com/aitiknowledge/archive/2022/02/28/學生姓名", index = 1) private String sname; } - 創建一個“監聽器”進行excel表的讀取(結構較為固定,內容根據需求變動)
package com.xsha.demo.excel; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import java.util.Map; public class ExcelListener extends AnalysisEventListener<MyData> { // 逐行讀取excel表格的內容 @Override public void invoke(MyData data, AnalysisContext analysisContext) { System.out.println(data.getSno()+"-----"+data.getSname()); } // 讀取表頭的內容 @Override public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) { System.out.println("表頭:"+headMap); } // 讀取完成之后 @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { } } - 代碼測驗
// 實作EasyExcel讀操作 @Test public void readExcel() { // 1.設定讀取檔案夾地址和excel檔案名稱 String filename = "D:\\xusha\\SpringProjects\\guli_parent\\service\\service_education\\src\\test\\java\\com\\xsha\\demo\\excel\\files\\write.xlsx"; // 3.呼叫EasyExcel里面的方法實作讀的操作,第一個引數是檔案路徑,第二個引數是物體類名稱,第三個引數是監聽器 EasyExcel.read(filename, MyData.class, new ExcelListener()).sheet("學生串列").doRead(); }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/434385.html
標籤:其他
上一篇:GUI猜數字游戲,直接開玩...
