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 的读取操作非常灵活,能够适应各种复杂的业务场景。

2572

被折叠的 条评论
为什么被折叠?



