总是依赖别人的话,就永远长不大。

今天给大家带来的是easyExcel的导入导出

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.5</version>
</dependency>

创建实体类

@Data
public class DictEeVo {

@ExcelProperty(value = "id" ,index = 0)
private Long id;

@ExcelProperty(value = "上级id" ,index = 1)
private Long parentId;

@ExcelProperty(value = "名称" ,index = 2)
private String name;

@ExcelProperty(value = "值" ,index = 3)
private String value;

@ExcelProperty(value = "编码" ,index = 4)
private String dictCode;

}

设置监听

public class DictListener extends AnalysisEventListener<DictEeVo> {

private final DictMapper dictMapper;
public DictListener(DictMapper dictMapper) {
this.dictMapper = dictMapper;
}

//一行一行读取
@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) {

}
}

导出

public void exportDictData(HttpServletResponse response) {
//设置下载信息
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
String fileName = "dict";
response.setHeader("Content-disposition", "attachment;filename="+ fileName + ".xlsx");
//查询数据库
List<Dict> dictList = baseMapper.selectList(null);
//Dict -- DictEeVo
List<DictEeVo> dictVoList = new ArrayList<>();
for(Dict dict:dictList) {
DictEeVo dictEeVo = new DictEeVo();
// dictEeVo.setId(dict.getId());
BeanUtils.copyProperties(dict,dictEeVo);
dictVoList.add(dictEeVo);
}
//调用方法进行写操作
try {
EasyExcel.write(response.getOutputStream(), DictEeVo.class).sheet("dict")
.doWrite(dictVoList);
} catch (IOException e) {
e.printStackTrace();
}
}

导入

@Override
//把这个规则下的缓冲进行清空
@CacheEvict(value = "dict", allEntries=true)
public void importDictData(MultipartFile file) {
try {
EasyExcel.read(file.getInputStream(),DictEeVo.class,new DictListener(baseMapper)).sheet().doRead();
} catch (IOException e) {
e.printStackTrace();
}
}