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