记录一下工作中遇到的坑,供大家参考。
首先导入maven依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.3</version>
</dependency>
代码实现
public R<T> import(MultipartFile file) {
try {
EasyExcelFactory.read(file.getInputStream(), UserDto.class,
new UserListener())
.excelType(ExcelTypeEnum.XLSX) //需要指明导入的excel的类型
.ignoreEmptyRow(true)
.doReadAll();
} catch (IOException e) {
e.printStackTrace();
return R.failed();
}
return R.ok();
}
这里需要注意,一开始没有指明excel的类型,代码报错无法识别。
监听器的实现
public class UserListener implements ReadListener<UserDto> {
@Override
public void invoke(UserlDto data, AnalysisContext context) {
//读取到的对象,编写逻辑处理
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
//监听器最后执行的方法,一般在这里调sql报错
}
}
到这里一个excel的导入读取功能就完成了。
值得注意的是,使用这个方式读取的excel文件需要是新版本的excel文件。工作中遇到了一个大坑,别的同事使用tfl文件生成的老版本excel文件(生成后是一个xml文件,然后将.xml改为了.xlsx),这种文件是读取不了的!