- 导入的依赖及版本控制是一样的
- 创建的实体类也是excel表格字段一致,只不过在注解中增加一个属性,指定表格的第几个字段(从0开始)
package com.xsha.demo.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class MyData {
// 设置excel表表头
@ExcelProperty(value = "学生编号", index = 0)
private Integer sno;
@ExcelProperty(value = "学生姓名", index = 1)
private String sname;
}
- 创建一个“监听器”进行excel表的读取(结构较为固定,内容根据需求变动)
package com.xsha.demo.excel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import java.util.Map;
public class ExcelListener extends AnalysisEventListener {
// 逐行读取excel表格的内容
@Override
public void invoke(MyData data, AnalysisContext analysisContext) {
System.out.println(data.getSno()+"-----"+data.getSname());
}
// 读取表头的内容
@Override
public void invokeHeadMap(Map headMap, AnalysisContext context) {
System.out.println("表头:"+headMap);
}
// 读取完成之后
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}
- 代码测试
// 实现EasyExcel读操作
@Test
public void readExcel() {
// 1.设置读取文件夹地址和excel文件名称
String filename = "D:\\xusha\\SpringProjects\\guli_parent\\service\\service_education\\src\\test\\java\\com\\xsha\\demo\\excel\\files\\write.xlsx";
// 3.调用EasyExcel里面的方法实现读的操作,第一个参数是文件路径,第二个参数是实体类名称,第三个参数是监听器
EasyExcel.read(filename, MyData.class, new ExcelListener()).sheet("学生列表").doRead();
}