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
page = getPage(); - List
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
(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
(zqRewardProjectContractService) ).sheet("表").doRead(); - List
list = EasyExcel.read(file.getInputStream(),ZqRewardProjectContract.class,new EasyExcelListener(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,自定义表头 这里部分代码