easyexcel 实现代码
依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>${easyexcel.version}</version> </dependency> <easyexcel.version>2.2.0-beta2</easyexcel.version>
controller
// 导出表 @ApiOperation(value="导出") @GetMapping(value = "/exportData") public void exportData(HttpServletResponse response) { dictService.exportData(response); } // 导入表 @ApiOperation(value = "导入") @PostMapping("/importData") public Result importData(MultipartFile file) { dictService.importData(file); return Result.ok(); }
service
// 导出表 @Override public void exportData(HttpServletResponse response) { try { // 设置下载信息 response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 String fileName = URLEncoder.encode("数据字典", "UTF-8"); response.setHeader("Content-disposition", "attachment;filename="+ fileName + ".xlsx"); // 查询数据库 List<Dict> dictList = baseMapper.selectList(null); List<DictEeVo> dictVoList = new ArrayList<>(dictList.size()); // 把数据封装处理一下 只提取几列 没有全部要 for(Dict dict : dictList) { DictEeVo dictVo = new DictEeVo(); //BeanUtils.copyBean(dict, dictVo, DictEeVo.class); BeanUtils.copyProperties(dict,dictVo); dictVoList.add(dictVo); } // 写 EasyExcel.write(response.getOutputStream(), DictEeVo.class).sheet("数据字典").doWrite(dictVoList); } catch (IOException e) { e.printStackTrace(); } } // 导入表 @Override @CacheEvict(value = "dict", allEntries=true) public void importData(MultipartFile file) { try { EasyExcel.read(file.getInputStream(),DictEeVo.class,new DictListener(baseMapper)).sheet().doRead(); } catch (IOException e) { e.printStackTrace(); } }