package com.ydtech.utils.excel; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.ExcelImportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.ImportParams; import com.ydtech.exception.SystemException; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.web.multipart.MultipartFile; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.List; /** * @Author: lig * @create: 2023-07-25 * description: Excel easypoi 导入导出工具类 */ public class ExcelEasypoiUtils { /** * excel 导出 重写 * * @param list 数据列表 * @param pojoClass pojo类型 * @param fileName 导出时的excel名称 * @param response */ public static void exportExcel(List list, Class pojoClass, String fileName, HttpServletResponse response) throws IOException { ExportParams ep = new ExportParams(); Workbook workbook = ExcelExportUtil.exportExcel(ep, pojoClass,list); // try { // //3.返回表格 // //设置表格文件名字 //// String fileName = batchNum + "-保司数据导出"; // fileName = URLEncoder.encode(fileName,"UTF8"); // // //设置返回数据类型 //// response.setContentType("application/vnd.ms-excel;charset=utf-8"); // response.setContentType("multipart/form-data"); // response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls"); // // //将表格输出 // workbook.write(response.getOutputStream()); // // } catch (UnsupportedEncodingException e) { // throw new RuntimeException(e); // } catch (IOException e) { // throw new RuntimeException(e); // } // fileName = URLEncoder.encode(fileName,"GBK"); // fileName = URLEncoder.encode(fileName,"UTF8"); fileName = URLEncoder.encode(fileName,"UTF8"); response.reset(); // response.setContentType("application/vnd.ms-excel;charset=utf-8"); response.setContentType("application/x-msdownload"); response.addHeader("Access-Control-Allow-Origin", "*"); response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE"); response.addHeader("Access-Control-Allow-Headers", "Content-Type"); response.setHeader("Content-Disposition", "attachment; filename=" + fileName +".xlsx"); // response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName+".xlsx", "UTF-8")); ServletOutputStream outStream = null; try { outStream = response.getOutputStream(); workbook.write(outStream); } finally { outStream.close(); } } /** * excel 导入 重写 * * @param file excel文件 * @param pojoClass pojo类型 * @param titleRows 表格标题行数 * @param headRows 表头行数,默认1 * @param sheetNum 上传表格需要读取的sheet 数量,默认为1 * @return */ public static List importExcel(MultipartFile file, Class pojoClass,Integer titleRows,Integer headRows,Integer sheetNum) throws IOException { ImportParams importParams = new ImportParams(); if(null != titleRows) importParams.setTitleRows(0); if(null != headRows) importParams.setHeadRows(1); if(null != sheetNum) importParams.setSheetNum(1); try { return ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, importParams); } catch (Exception e) { throw new SystemException("导入excel失败:" + e.getMessage()); // throw new RuntimeException(e); } } }