一、导入
1、单个 sheet 页
写法一(使用监听器):
//导入接口
@GetMapping
public void readExcel(@RequestParam("file") MultipartFile file) throws IOException {
InputStream inputStream = file.getInputStream();
EasyExcel.read(inputStream)
.sheet(0)//导入数据的sheet页编号,0代表第一个sheet页,如果不填,则会导入所有sheet页的数据
.head(AttendanceStatistics.class)//对应导入的实体类
.headRowNumber(4)//列表头行数,1代表列表头有1行,第二行开始为数据行
.registerReadListener(new AttendanceStatisticsListener())//注册自定义监听器,字段校验可以在监听器内实现
.doRead();//开始读Excel
}
@Slf4j
public class AttendanceStatisticsListener extends AnalysisEventListener<AttendanceStatistics> {
@Override
public void invoke(AttendanceStatistics data, AnalysisContext context) {
log.info("解析到一条数据:{}", data);//已经注入到实体中了。不需要特殊处理
}
//所有执行完毕
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}
方法二(不使用监听器,最基本的导入):
//导入接口
@GetMapping
public void readExcel(@RequestParam("file") MultipartFile file) throws IOException {
InputStream inputStream = file.getInputStream();
List<AttendanceStatistics> list = EasyExcel.read(inputStream)
.sheet(0)//导入数据的sheet页编号,0代表第一个sheet页,如果不填,则会导入所有sheet页的数据
.head(AttendanceStatistics.class)//对应导入的实体类
.headRowNumber(4)//列表头行数,1代表列表头有1行,第二行开始为数据行
//.registerReadListener(new AttendanceStatisticsListener())//注册自定义监听器,字段校验可以在监听器内实现
.doReadSync();//开始读Excel,返回一个List<T>集合,继续后续入库操作
log.info("打印对象集合:{}",list);
}
出现的问题:
如果 Excel 下方有与数据无关的备注内容,也会读取的问题。
Excel 从实体类的第一个属性开始注入,如何不从 id 开始注入。
自定义写法
2、多个 sheet 页
二、导出
1、根据模板导出
2、
标签:sheet,监听器,easyExcel,导入,void,file,public From: https://www.cnblogs.com/mostimaaa/p/18151151