EasyExcel读取监听器

该文章已生成可运行项目,

EasyExcel控制读取行为

  • EasyExcel 是一个基于 Java 的简单、省内存的读写 Excel 的开源工具。它的读取操作主要通过 ReadListener 来实现,ReadListener 是一个监听器接口,用于在读取 Excel 数据时进行回调处理。

EasyExcel 读取的基本流程
创建 ReadListener 实现类:

你需要实现 ReadListener 接口,并在其中定义读取数据时的处理逻辑。ReadListener 接口中有几个关键方法:

invoke(T data, AnalysisContext context):每读取一行数据时触发,data 是当前行的数据对象。

doAfterAllAnalysed(AnalysisContext context):当所有数据读取完成后触发。

onException(Exception exception, AnalysisContext context):当读取过程中发生异常时触发。

注册 ReadListener:

在读取 Excel 文件时,通过 EasyExcel.read() 方法注册你自定义的 ReadListener,从而控制读取行为。

读取 Excel 文件:

调用 EasyExcel.read() 方法,传入 Excel 文件路径、数据模型类(即每一行数据对应的 Java 类)以及你自定义的 ReadListener。

示例代码
假设你有一个 Excel 文件,每一行数据对应一个 User 对象,你可以通过以下方式自定义读取:

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;

import java.util.ArrayList;
import java.util.List;

public class EasyExcelReadExample {

public static void main(String[] args) {
    // Excel 文件路径
    String fileName = "example.xlsx";

    // 读取 Excel 文件
    EasyExcel.read(fileName, User.class, new UserDataListener()).sheet().doRead();
}

// 自定义的 ReadListener
public static class UserDataListener extends AnalysisEventListener<User> {

    private List<User> userList = new ArrayList<>();

    // 每读取一行数据时触发
    @Override
    public void invoke(User user, AnalysisContext context) {
        userList.add(user);
        System.out.println("读取到数据: " + user);
    }

    // 所有数据读取完成后触发
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        System.out.println("所有数据读取完成,共读取到 " + userList.size() + " 条数据");
    }
}

// 数据模型类
public static class User {
    private String name;
    private int age;

    // getter 和 setter 方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

}
关键点
UserDataListener:这是自定义的 ReadListener,负责处理每一行数据的读取逻辑。

User 类:这是数据模型类,表示 Excel 中每一行的数据结构。

EasyExcel.read():这是读取 Excel 文件的核心方法,传入文件路径、数据模型类和 ReadListener。

自定义读取行为
通过实现 ReadListener,你可以完全控制读取行为,例如:

在 invoke 方法中对每一行数据进行处理。

在 doAfterAllAnalysed 方法中进行数据读取完成后的操作,如数据持久化、统计等。

在 onException 方法中处理读取过程中可能出现的异常。

这种方式使得 EasyExcel 的读取操作非常灵活,能够适应各种复杂的业务场景。

本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值