EasyExcel导入导出速成版

47 阅读1分钟
  1. 导入依赖

<!-- easyExcel依赖 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.2.1</version> </dependency>

我使用的是3.2.1版本,具体版本之间的差异,可以看官网文档,链接我放这了easyexcel.opensource.alibaba.com/

  1. Controller层代码编写(导入)

@PostMapping("import-excel")

public void importExcel(MultipartFile multipartFile) throws IOException { if (ObjUtil.isNull(multipartFile)) { return; }

// 这里需要指定读用哪个class去读,然后读取第一个sheet文件流会自动关闭
EasyExcel.read(multipartFile.getInputStream(), BmsBaseUserCompanySet.class, new PageReadListener<BmsBaseUserCompanySet>(dataList -> {
    for (BmsBaseUserCompanySet bmsBaseUserCompanySet : dataList) {
        // 业务逻辑
    this.exportExcelService.insert(bmsBaseUserCompanySet);
    }
})).sheet().doRead();}

其中我对代码的健壮性进行了判断,使用的是Hutool工具包,需要变动的就只有红色部分,使用自己需要映射的实体类即可。

2.1 进行测试 之后查看数据库数据即可

  1. 编写controller层代码(导出)

@PostMapping("export-excel")

public void exportExcel() {

// 设置文件导出的路径
String realPath = "C://Log/";
File folder = new File(realPath);
if (!folder.isDirectory()){
    folder.mkdirs();
}
String fileName = realPath  + "User" + System.currentTimeMillis() + ".xlsx";
// 这里需要指定写用哪个class去写,然后写到第一个sheet,名字为用户表 然后文件流会自动关闭
EasyExcel.write(fileName, BmsBaseUserCompanySet.class).sheet("用户表").doWrite(data());
}
public List<BmsBaseUserCompanySet> data() {
// 查询用户表,具体service层实现就不写了
return this.exportExcelService.list(null);}

其中红色区域代表可修改内容,当然,data() 方法也可以不提取出来。

3.1 进行测试 之后根据所写的导出地址,找到对应的文件即可。

PS:方式有很多种,我只分享我觉得很便捷高效的一种!!!