1.pom导入依赖
2.最简单的读
定义读的对象
@Data
@EqualsAndHashCode
public class UserInfo {
/**
* id
*/
@ExcelProperty("编号")
private String code;
/**
* 用户昵称
*/
@ExcelProperty("姓名")
private String name;
}
编写监听器
@Slf4j
public class DemoDataListener implements ReadListener<UserInfo> {
@Override
public void invoke(UserInfo userInfo, AnalysisContext analysisContext) {
System.out.println(userInfo);
}
/**
* 所有数据解析完成了 都会来调用
*
* @param context
*/
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
log.info("所有数据解析完成!");
}
}
测试
public static void main(String[] args) {
String fileName = "E:\\code\\src\\main\\resources\\table.xlsx";
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
EasyExcel.read(fileName, UserInfo.class, new DataListener()).sheet().doRead();
}
3.同步读
public static void main(String[] args) {
String fileName = "xxx"
List<UserInfo> userList = EasyExcel.read(fileName).head(UserInfo.class).sheet().doReadSync();
for (UserInfo userInfo : userList) {
System.out.println(userInfo);
}
}
4.总结
两种读取对象的方式:
确定表头:建立对象和表头映射关系
不确定表头:每一行的数据映射为Map<String, Object>
两种读取模式:
监听器(Listener):先创建监听器在读取文件时绑定监听器。单独抽离处理逻辑。条一条的读。
同步读:无需创建监听器,一下需要读取完成数据到内存中。方便简洁但可能内存溢出。