package com.zy.common.web; 
 | 
  
 | 
import com.alibaba.excel.EasyExcel; 
 | 
import com.core.common.R; 
 | 
import com.zy.common.utils.excel.EnInitData; 
 | 
import com.zy.common.utils.excel.EnInitDataListener; 
 | 
import com.zy.common.utils.excel.ExcelUtils; 
 | 
import org.springframework.stereotype.Controller; 
 | 
import org.springframework.web.bind.annotation.GetMapping; 
 | 
import org.springframework.web.bind.annotation.PostMapping; 
 | 
import org.springframework.web.bind.annotation.RequestMapping; 
 | 
import org.springframework.web.bind.annotation.ResponseBody; 
 | 
import org.springframework.web.multipart.MultipartFile; 
 | 
  
 | 
import javax.servlet.http.HttpServletResponse; 
 | 
import java.io.IOException; 
 | 
import java.net.URLEncoder; 
 | 
  
 | 
/** 
 | 
 * todo 
 | 
 * Created by vincent on 2019-11-25 
 | 
 */ 
 | 
@Controller 
 | 
@RequestMapping("excel/") 
 | 
public class FileController { 
 | 
  
 | 
    /** 
 | 
     * 文件上传 
 | 
     */ 
 | 
    @PostMapping("upload") 
 | 
    @ResponseBody 
 | 
    public R upload(MultipartFile file) throws IOException { 
 | 
        EasyExcel.read(file.getInputStream(), EnInitData.class, new EnInitDataListener()).sheet().doRead(); 
 | 
        return R.ok(); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 文件下载(失败了会返回一个有部分数据的Excel) 
 | 
     */ 
 | 
    @GetMapping("download") 
 | 
    public void download(HttpServletResponse response) throws IOException { 
 | 
        // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman 
 | 
        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"); 
 | 
        EasyExcel.write(response.getOutputStream(), EnInitData.class).sheet("模板").doWrite(ExcelUtils.data()); 
 | 
    } 
 | 
  
 | 
} 
 |