Spring Boot + Mybatis-Plus + EasyExcel 导入导出
导入
一 常用注解
@ExcelProperty 指定当前字段对应excel中的那一列。可以根据名字或者Index去匹配。当然也可以不写,默认第一个字段就是index=0,以此类推。千万注意,要么全部不写,要么全部用index,要么全部用名字去匹配。千万别三个混着用,除非你非常了解源代码中三个混着用怎么去排序的。
@ExcelIgnore 默认所有字段都会和excel去匹配,加了这个注解会忽略该字段
@DateTimeFormat 日期转换,用String去接收excel日期格式的数据会调用这个注解。里面的value参照java.text.SimpleDateFormat
@NumberFormat 数字转换,用String去接收excel数字格式的数据会调用这个注解。里面的value参照java.text.DecimalFormat
@ExcelIgnoreUnannotated默认不加ExcelProperty 的注解的都会参与读写,加了不会参与
二 依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.4</version>
</dependency>
三 监听
public class ExcelListener extends AnalysisEventListener<XxxDto> {
XxxService xxxService;
private List<XxxDto> datas = new ArrayList<XxxDto>();
public ExcelListener(XxxService xxxService) {
this.xxxService = xxxService;
}
@Override
public void invoke(XxxDto xxxDto, AnalysisContext analysisContext) {
datas.add(xxDto);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
log.info("当前sheet读取完毕...");
saveData();
}
private void saveData() {
List<XxxEntity> list = datas.stream().map(item -> {
XxxEntity xxxEntity = new XxxEntity();
xxxEntity.setName(item.getName());
xxxEntity.setAge(item.getAge());