package doumeemes.core.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 cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.net.URLEncoder; import java.util.List; import java.util.Map; import java.util.NoSuchElementException; /** * @author yangli * @description 基于easy-excel的导入导出工具类 * easy-excel参考网址:http://easypoi.mydoc.io/#text_217704 * 该工具类来源:https://www.cnblogs.com/better-farther-world2099/articles/11831695.html */ public class EasyExcelUtil { public static void exportExcel(List list, String title, String sheetName, Class pojoClass,String fileName,boolean isCreateHeader, HttpServletResponse response){ ExportParams exportParams = new ExportParams(title, sheetName); exportParams.setCreateHeadRows(isCreateHeader); defaultExport(list, pojoClass, fileName, response, exportParams); } public static void exportExcel(List list, String title, String sheetName, Class pojoClass,String fileName, HttpServletResponse response){ defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName)); } public static void exportExcel(List> list, String fileName, HttpServletResponse response){ defaultExport(list, fileName, response); } private static void defaultExport(List list, Class pojoClass, String fileName, HttpServletResponse response, ExportParams exportParams) { Workbook workbook = ExcelExportUtil.exportExcel(exportParams,pojoClass,list); if (workbook != null) { ; } downLoadExcel(fileName, response, workbook); } private static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) { try { response.setCharacterEncoding("UTF-8"); response.setHeader("content-Type", "application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); workbook.write(response.getOutputStream()); } catch (IOException e) { //throw new NormalException(e.getMessage()); e.printStackTrace(); } } private static void defaultExport(List> list, String fileName, HttpServletResponse response) { Workbook workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF); if (workbook != null) { ; } downLoadExcel(fileName, response, workbook); } public static List importExcel(String filePath,Integer titleRows,Integer headerRows, Class pojoClass){ if (StringUtils.isBlank(filePath)){ return null; } ImportParams params = new ImportParams(); params.setTitleRows(titleRows); params.setHeadRows(headerRows); List list = null; try { list = ExcelImportUtil.importExcel(new File(filePath), pojoClass, params); }catch (NoSuchElementException e){ //throw new NormalException("模板不能为空"); e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); //throw new NormalException(e.getMessage()); } return list; } /** * excel常规导入(默认只读取第一张sheet工作簿) */ public static List importExcel(MultipartFile file, Integer titleRows, Integer headerRows, Class pojoClass){ if (file == null){ return null; } ImportParams params = new ImportParams(); params.setTitleRows(titleRows); params.setHeadRows(headerRows); List list = null; try { list = ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, params); }catch (NoSuchElementException e){ // throw new NormalException("excel文件不能为空"); e.printStackTrace(); } catch (Exception e) { //throw new NormalException(e.getMessage()); e.printStackTrace(); } return list; } /** * excel常规导入(默认只读取第一张sheet工作簿) */ public static List importExcel(MultipartHttpServletRequest file, Integer titleRows, Integer headerRows, Class pojoClass){ if (file == null){ return null; } ImportParams params = new ImportParams(); params.setTitleRows(titleRows); params.setHeadRows(headerRows); List list = null; try { list = ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, params); }catch (NoSuchElementException e){ // throw new NormalException("excel文件不能为空"); e.printStackTrace(); } catch (Exception e) { //throw new NormalException(e.getMessage()); e.printStackTrace(); } return list; } /** * excel自定义导入,记得设置titleRows与headRows */ public static List importExcel(MultipartFile file, Class pojoClass, ImportParams params){ if (file == null){ return null; } List list = null; try { list = ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, params); }catch (NoSuchElementException e){ // throw new NormalException("excel文件不能为空"); e.printStackTrace(); } catch (Exception e) { //throw new NormalException(e.getMessage()); e.printStackTrace(); } return list; } }