读取的Excel表格
POM.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.24</version>
</dependency>
domain
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.util.Date;
@Data
public class SimpleData {
@ExcelProperty("姓名")
private String name;
@ExcelProperty("日期")
private Date date;
@ExcelProperty("数字")
private Double num;
}
监听器
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.read.listener.ReadListener;
import com.itheima.model.SimpleData;
import java.util.ArrayList;
import java.util.List;
/*
需求: 每次解析10行数据就输出一次,然后情况List集合的内容。
98行
最后还有8条记录
*/
public class SimpledataListener extends AnalysisEventListener<SimpleData> {
private List<SimpleData> list = new ArrayList<>();
/*
invoke:执行时机,每次读取到一行数据就会执行到invoke方法一次,解析出来的数据已经自动封装到SimpleData对象。
*/
@Override
public void invoke(SimpleData simpleData, AnalysisContext analysisContext) {
if(list.size()>=10){
System.out.println("集合内容:"+ list);
list.clear();
}
list.add(simpleData);
}
/*
excel已经完全读取完毕的时候,就会执行。
*/
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
System.out.println("最后剩余数据:"+ list);
}
}
Demo
import com.alibaba.excel.EasyExcel;
import com.itheima.listener.SimpledataListener;
import com.itheima.model.SimpleData;
import java.io.File;
public class AppMain {
public static void main(String[] args) {
String fileName = "G:\\173project\\easyExcel_demo\\src\\main\\resources\\simpleData.xlsx";
// 这里默认读取第一个sheet
EasyExcel.read(fileName, SimpleData.class, new SimpledataListener()).sheet().doRead();
}
}