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);//导出excelEasyExcel.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,自定义表头 这里部分代码