| 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<Map<String, Object>> 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<Map<String, Object>> list, String fileName, HttpServletResponse response) { | 
|         Workbook workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF); | 
|         if (workbook != null) { | 
|             ; | 
|         } | 
|         downLoadExcel(fileName, response, workbook); | 
|     } | 
|   | 
|     public static <T> List<T> importExcel(String filePath,Integer titleRows,Integer headerRows, Class<T> pojoClass){ | 
|         if (StringUtils.isBlank(filePath)){ | 
|             return null; | 
|         } | 
|         ImportParams params = new ImportParams(); | 
|         params.setTitleRows(titleRows); | 
|         params.setHeadRows(headerRows); | 
|         List<T> 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; | 
|     } | 
|   | 
|     /** | 
|      * | 
|      * titleRows : 标题占几行 | 
|      * headerRows : 同占几行 | 
|      * excel常规导入(默认只读取第一张sheet工作簿) | 
|      */ | 
|     public static <T> List<T> importExcel(MultipartFile file, Integer titleRows, Integer headerRows, Class<T> pojoClass){ | 
|         if (file == null){ | 
|             return null; | 
|         } | 
|         ImportParams params = new ImportParams(); | 
|         params.setTitleRows(titleRows); | 
|         params.setHeadRows(headerRows); | 
|         List<T> 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 <T> List<T> importExcel(MultipartHttpServletRequest file, Integer titleRows, Integer headerRows, Class<T> pojoClass){ | 
|         if (file == null){ | 
|             return null; | 
|         } | 
|         ImportParams params = new ImportParams(); | 
|         params.setTitleRows(titleRows); | 
|         params.setHeadRows(headerRows); | 
|         List<T> 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 <T> List<T> importExcel(MultipartFile file, Class<T> pojoClass, ImportParams params){ | 
|         if (file == null){ | 
|             return null; | 
|         } | 
|         List<T> 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; | 
|     } | 
| } |