简单了解一下 EasyExcel

2020-05-19 16:11:55来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

简单了解一下 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

 


原文链接:https://www.cnblogs.com/l-y-h/p/12918575.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:JDK安装与配置环境变量

下一篇:面试再问HashMap,求你把这篇文章发给他!