EasyExcel入门使用教程

文章目录


简介

数据导入导出意义

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

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

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

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

官网地址:https://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,其更加节省内存,处理速度更快,如果你认为本文对你有帮助的话,可以点赞收藏!!!✨✨✨

相关推荐
ManThink Technology3 分钟前
如何使用EBHelper 简化EdgeBus的代码编写?
java·前端·网络
invicinble7 分钟前
springboot的核心实现机制原理
java·spring boot·后端
人道领域15 分钟前
SSM框架从入门到入土(AOP面向切面编程)
java·开发语言
獨枭24 分钟前
Windows 下安装与使用 Miniconda 完整指南
windows
大模型玩家七七35 分钟前
梯度累积真的省显存吗?它换走的是什么成本
java·javascript·数据库·人工智能·深度学习
CodeToGym1 小时前
【Java 办公自动化】Apache POI 入门:手把手教你实现 Excel 导入与导出
java·apache·excel
凡人叶枫1 小时前
C++中智能指针详解(Linux实战版)| 彻底解决内存泄漏,新手也能吃透
java·linux·c语言·开发语言·c++·嵌入式开发
JMchen1232 小时前
Android后台服务与网络保活:WorkManager的实战应用
android·java·网络·kotlin·php·android-studio
命里有定数2 小时前
保姆级教程:在 Windows (WSL2) 下本地部署 Qwen3-ASR
windows
阔皮大师2 小时前
INote轻量文本编辑器
java·javascript·python·c#