簡單了解一下 EasyExcel


一、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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM