一、EasyExcel
1、簡介
EasyExcel 是一個基于 Java 的簡單、省記憶體的讀寫 Excel 的開源專案,
在盡可能節約記憶體的情況下支持讀寫百 M 的 Excel(沒有一次性將資料讀取到記憶體中,從磁盤中一行行讀取,從而節約記憶體),
EasyExcel 采用一行一行的決議模式,并將一行的決議結果以觀察者的模式通知處理(AnalysisEventListener),
簡單地理解:可以方便、快速的讀取、寫入 execl 內容,
【官方檔案地址:】 https://alibaba-easyexcel.github.io/index.html https://www.yuque.com/easyexcel
2、SpringBoot 快速整合 EasyExcel(實作寫操作)
(1)創建一個 SpringBoot 專案,

(2)添加依賴資訊,
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.6</version>
</dependency>

(3)添加 excel 對應的物體類資訊,
package com.lyh.test.testeasyexcel.entity; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; @Data public class User { @ExcelProperty("姓名") private String userName; @ExcelProperty("郵箱") private String email; @ExcelProperty("年齡") private Integer age; }

(4)撰寫測驗方法,寫入檔案
package com.lyh.test.testeasyexcel; import com.alibaba.excel.EasyExcel; import com.lyh.test.testeasyexcel.entity.User; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import java.util.ArrayList; import java.util.List; @SpringBootTest class TestEasyexcelApplicationTests { @Test void testWrite() { // 檔案保存的位置 String fileName = "G:/test/test.xlsx"; EasyExcel.write(fileName, User.class).sheet("用戶表").doWrite(list()); } // 簡單造寫資料,用于測驗 public List<User> list() { List<User> list = new ArrayList<>(); for (int i = 0; i < 10; i++) { User user = new User(); user.setUserName("tom" + i); user.setAge((int)(Math.random() * 20)); user.setEmail(user.getUserName() + "@163.com"); list.add(user); } return list; } }

(5)執行結果

3、SpringBoot 快速整合 EasyExcel(實作讀操作)
基本與 寫操作 類似,但是需要定義一個監聽器,用于監聽操作,
(1)創建專案、引入依賴、撰寫物體類(與寫操作相同,此處省略)
(2)撰寫監聽器,監聽 excel 讀取操作,
此監聽器不交給 Spring 管理,所以相關注入(比如 @Autowired)不會生效,
若想使用 service、dao 等相關類,可以通過 構造方法將其引入,
package com.lyh.test.testeasyexcel.excel; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.lyh.test.testeasyexcel.entity.User; import java.util.Map; /** * 定義一個資料監聽器,繼承 AnalysisEventListener 抽象類, * 該監聽器不交給 Spring 管理,所以如果需要使用 service、dao 相關的類時,需要通過構造方法引入, */ public class DataListener extends AnalysisEventListener<User> { // 一行行讀取表格內容 @Override public void invoke(User user, AnalysisContext analysisContext) { System.out.println("===============" + user); } // 讀取表頭內容 @Override public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) { System.out.println("======表頭內容========" + headMap); } // 讀取完成后的操作 @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { System.out.println("========讀取完成========"); } }

(3)撰寫測驗方法,讀取檔案
package com.lyh.test.testeasyexcel; import com.alibaba.excel.EasyExcel; import com.lyh.test.testeasyexcel.entity.User; import com.lyh.test.testeasyexcel.excel.DataListener; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class TestEasyexcelApplicationTests { @Test void testRead() { // 讀取檔案的位置 String fileName = "G:/test/test.xlsx"; EasyExcel.read(fileName, User.class, new DataListener()).sheet().doRead(); } }

此處僅做個簡單了解,詳細使用參考官方檔案進行更詳細的操作,
【官方檔案地址:】 https://alibaba-easyexcel.github.io/index.html https://www.yuque.com/easyexcel
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/188606.html
標籤:Java
上一篇:JDK安裝與配置環境變數
