POM依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.0</version>
</dependency>
根据读取的Excel文件创建实体类
我这里在D盘目录下创建一个test.xlsx文件,文件中是这样的数据列与数据行:
在项目中创建实体类,根据Excel文件的表头创建对应的实体类:
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
public class TestExcel {
// value 是excel文件的表头 index 是第几列
@ExcelProperty(value = "用户名", index = 0)
private String name;
@ExcelProperty(value = "年龄", index = 1)
private String age;
@ExcelProperty(value = "性别", index = 2)
private String gender;
@ExcelProperty(value = "出生年月日", index = 3)
private Date birthday;
}
读取Excel文件数据
public static void main(String[] args) {
// 读取文件的路径
final String excelFilePath = "D:/test.xlsx";
// 读取excel
EasyExcel.read(excelFilePath, TestExcel.class, new AnalysisEventListener<TestExcel>() {
// 每读取一行数据, 该方法会被调用一次
@Override
public void invoke(TestExcel testExcel, AnalysisContext analysisContext) {
System.out.println("读取了一行");
System.out.println("testExcel " + testExcel);
}
// 全部读取完成被调用
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
System.out.println("全部读取完成");
}
}).sheet().doRead();
}
打印日志:
读取了一行
testExcel TestExcel(name=张三, age=19, gender=男, birthday=Tue Jan 01 00:00:00 CST 2002)
读取了一行
testExcel TestExcel(name=李四, age=20, gender=女, birthday=Fri Feb 02 00:00:00 CST 2001)
全部读取完成