EasyExcel入门使用教程

简介

数据导入导出意义

后台管理系统是管理、处理企业业务数据的重要工具,在这样的系统中,数据的导入和导出功能是非常重要的,其主要意义包括以下几个方面:

1、提高数据操作效率:手动逐条添加或修改数据不仅费时费力,而且容易出错,此时就可以将大量数据从Excel等表格软件中导入到系统中时,通过数据导入功能,可以直接将表格中的数据批量导入到系统中,提高了数据操作的效率。

2、实现数据备份与迁移:通过数据导出功能,管理员可以将系统中的数据导出为 Excel 或其他格式的文件,以实现数据备份,避免数据丢失。同时,也可以将导出的数据文件用于数据迁移或其他用途。

3、方便企业内部协作:不同部门可能会使用不同的系统或工具进行数据处理,在这种情况下,通过数据导入和导出功能,可以方便地转换和共享数据,促进企业内部协作。

官网地址:easyexcel.opensource.alibaba.com/

EasyExcel 的主要特点如下:

1、高性能:EasyExcel 采用了异步导入导出的方式,并且底层使用 NIO 技术实现,使得其在导入导出大数据量时的性能非常高效。

2、易于使用:EasyExcel 提供了简单易用的 API,用户可以通过少量的代码即可实现复杂的 Excel 导入导出操作。

3、增强的功能"EasyExcel 支持多种格式的 Excel 文件导入导出,同时还提供了诸如合并单元格、数据校验、自定义样式等增强的功能。

4、可扩展性好:EasyExcel 具有良好的扩展性,用户可以通过自定义 Converter 对自定义类型进行转换,或者通过继承 EasyExcelListener 来自定义监听器实现更加灵活的需求。

一、工程创建🕶

创建一个普通的Maven项目

添加相关依赖

xml 复制代码
<dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>easyexcel</artifactId>
      <version>3.1.0</version>
    </dependency>
​
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.30</version>
    </dependency>

准备一个实体类

java 复制代码
package com.bean;
​
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
​
import java.util.Date;
​
@Getter
@Setter
@EqualsAndHashCode
@ToString
public class DemoData {
    @ExcelProperty(value = "名字", index = 0)
    private String username;
​
    @ExcelProperty(value = "密码", index = 1)
    private String password;
​
    @ExcelProperty(value = "链接", index = 2)
    private String url;
}

创建监听器

java 复制代码
package com.listener;
​
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
​
@Slf4j
public class DemoDataListener<T> extends AnalysisEventListener<T> {
    @Override
    public void invoke(T t, AnalysisContext analysisContext) {
​
    }
​
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
​
    }
}

项目结构

在桌面准备一个Excel文件,并写入一些测试数据

注意:表头的字段名和实体类中的对应关系

二、读操作🎊

实现监听器的相关方法

java 复制代码
package com.listener;
​
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
​
import java.util.ArrayList;
import java.util.List;
​
@Slf4j
public class DemoDataListener<T> extends AnalysisEventListener<T> {
    //可以通过实例获取该值
    private List<T> datas = new ArrayList<>();
​
    @Override
    public void invoke(T o, AnalysisContext analysisContext) {  // 每解析一行数据就会调用一次该方法
        datas.add(o);//数据存储到list,供批量处理,或后续自己业务逻辑处理。
    }
​
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        // excel解析完毕以后需要执行的代码
    }
​
    public List<T> getDatas() {
        return datas;
    }
}

测试

在Main.java中测试写操作

java 复制代码
package com;
​
import com.alibaba.excel.EasyExcel;
import com.bean.DemoData;
import com.listener.DemoDataListener;
​
import java.util.List;
​
/**
 * @Author YZK
 * @Date 2023/11/13
 */
public class Main {
    public static void main(String[] args) {
        read();
    }
    //读取方法
    public static void read() {
        //定义excel文件的位置
        String filePath = "C:\Users\ME08I\Desktop\test.xlsx";
        DemoDataListener<DemoData> demoDataListener = new DemoDataListener();
        //调用excel中的read方法
        EasyExcel.read(filePath, DemoData.class,demoDataListener)
                .sheet()
                .doRead();
        List<DemoData> datas = demoDataListener.getDatas();
        System.out.println(datas);
    }
}

所有测试数据均被读出

二、写操作🎄

测试

在Main.java中添加写操作

java 复制代码
public static void write(){
    String filePath = "C:\Users\ME08I\Desktop\test.xlsx";
    List<DemoData> demoDataList = new ArrayList<>();
    demoDataList.add(new DemoData("admin","123","http://321.com"));
    demoDataList.add(new DemoData("user","123user","http://123kkk456.com"));
    EasyExcel.write(filePath,DemoData.class)
            .sheet("测试表")
            .doWrite(demoDataList);
}

注意:写操作直接添加一个列表就行,同时要给sheet名一个名字,文件不存在的话,它会自动创建然后写入

总结

EasyExcel还是一个非常好用的工具,据说相较于POI,其更加节省内存,处理速度更快,如果你认为本文对你有帮助的话,可以点赞收藏!!!✨✨✨

相关推荐
㳺三才人子6 小时前
初探 Flask
后端·python·flask·html
星栈独行6 小时前
我在 Rust 全栈项目里用 JWT 做无状态认证
开发语言·后端·rust·前端框架·开源·github·web
Lei活在当下6 小时前
先用起来,再理解,关于协程Coroutine应该知道的事
android·java·jvm
Java爱好狂.6 小时前
Java程序员体系化学习路线(2026最新版)
java·后端·java面试·java架构师·java程序员·java八股文·java学习路线
陈随易6 小时前
Redis 8.8发布,一定要更新
前端·后端·程序员
tongluowan0077 小时前
以ReentrantLock为例解释AQS的工作流程
java·模板方法模式·aqs·reentrantlock
装不满的克莱因瓶7 小时前
SpringBoot 如何将 lib 目录中jar包打包进最终的jar包里面
spring boot·后端·maven·jar·mvn
ltl7 小时前
Transformer 原论文实验结果:为什么 28.4 BLEU 足以改写路线图
后端
身如柳絮随风扬8 小时前
Java 项目打包与部署完全指南:JAR vs WAR,从构建到运行
java·firefox·jar
云烟成雨TD8 小时前
Spring AI Alibaba 1.x 系列【62】时光旅行(Time-Travel)
java·人工智能·spring