EasyExcel导入导出,处理数据
1.导出模块,导出中有中文文件名称,设置格式
/** * 以流方式响应回给客户端,返回值类型设置成void * * @param response 输出excel表格,让用户下载 */ @PostMapping("/exportExcel") public void exportExcel(ZqRewardProjectContract zqRewardProjectContract,HttpServletResponse response){ try { // 设置内容格式 以及 编码方式(文件指定可以修改) // response.setContentType("application/vnd.ms-excel"); response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setCharacterEncoding("utf-8"); //attachment指定独立文件下载 不指定则回浏览器中直接打开 // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 String fileName = URLEncoder.encode("数据", "UTF-8").replaceAll("\+", "%20"); response.setHeader("Content-disposition", "attachment;filename*=utf-8" + fileName + ".xlsx"); // response.setHeader("Content-Disposition","attachment;filename="+new String("数据.xlsx".getBytes(),"UTF-8")); //输出文件流 调用服务层方法,获取excel对象放入输出流 Page<ZqRewardProjectContract> page = getPage(); List<ZqRewardProjectContract> list = zqRewardProjectContractService.findAll(page, zqRewardProjectContract); //导出excel EasyExcel.write(response.getOutputStream(), ZqRewardProjectContract.class).sheet(0).doWrite(list); } catch (Exception e) { e.printStackTrace(); } }
2.导入,直接导入和异步导入(可以处理重复和设置参数)
/** * ajax文件上传,前端传递的文件对象为file * * @param file 前端上传的excel文件 * @return */ @PostMapping("/importExcel") public String importExcel(MultipartFile file){ //从解析器中获取excel文件流,传入到服务层进行读取处理 try { EasyExcel.read(file.getInputStream(),ZqRewardProjectContract.class,new EasyExcelListener<ZqRewardProjectContract>(zqRewardProjectContractService) ).sheet("表").doRead(); } catch (Exception e) { e.printStackTrace(); return "导入失败"; } return "导入成功"; } /** * ajax文件上传,前端传递的文件对象为file * * @param file 前端上传的excel文件 * @return */ @PostMapping("/importExcel2") public String importExcel2(MultipartFile file){ //从解析器中获取excel文件流,传入到服务层进行读取处理 try { // EasyExcel.read(file.getInputStream(),ZqRewardProjectContract.class,new EasyExcelListener<ZqRewardProjectContract>(zqRewardProjectContractService) ).sheet("表").doRead(); List<ZqRewardProjectContract> list = EasyExcel.read(file.getInputStream(),ZqRewardProjectContract.class,new EasyExcelListener<ZqRewardProjectContract>(zqRewardProjectContractService) ).sheet("表").doReadSync(); //处理数据 for (int i = 0,n = list.size(); i < n; i++) { list.get(i).set区域("县市"); } zqRewardProjectContractService.saveOrUpdateBatch(list); } catch (Exception e) { e.printStackTrace(); return "导入失败"; } return "导入成功"; }
3.多sheet导出
4.输出多个sheet,自定义表头 这里部分代码
下一篇:
【题解】矩形分割(二分)