- 导入依赖
<!-- easyExcel依赖 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.2.1</version> </dependency>
我使用的是3.2.1版本,具体版本之间的差异,可以看官网文档,链接我放这了easyexcel.opensource.alibaba.com/
- 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 进行测试 之后查看数据库数据即可
- 编写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:方式有很多种,我只分享我觉得很便捷高效的一种!!!