实际开发中我们可能会通过excel表批量添加数据这时候就要用到EasyExcel的读操作了
前端
controller层
@ApiOperation("导入数据字典")
@PostMapping("/importData")
public Result importData(MultipartFile file){
dictService.importData(file);
return Result.ok();
}
service层
读与写不同的是要添加读的监听器,
监听器
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.lvren.yygh.cmn.mapper.DictMapper;
import com.lvren.yygh.model.cmn.Dict;
import com.lvren.yygh.model.cmn.DictEeVo;
import org.springframework.beans.BeanUtils;
public class DictListener extends AnalysisEventListener<DictEeVo> {
DictMapper dictMapper;
public DictListener(){}
// 通过构造函数初始化dictMapper
public DictListener(DictMapper dictMapper){
this.dictMapper = dictMapper;
}
// 在执行excel读操作时会执行这个函数、从第二行开始读取数据时,将数据添加到数据库中
@Override
public void invoke(DictEeVo dictEeVo, AnalysisContext analysisContext) {
Dict dict = new Dict();
BeanUtils.copyProperties(dictEeVo,dict);
dictMapper.insert(dict);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}
进行读操作
// 从excel中导入数据
@Override
public void importData(MultipartFile file) {
try {
// 进行读操作
EasyExcel.read(file.getInputStream(),DictEeVo.class,new DictListener(baseMapper)).sheet().doRead();
} catch (IOException e) {
e.printStackTrace();
}
}