excel匯出FileUtil工具類
阿新 • • 發佈:2018-11-10
package com.ziyun.pop.common.utils; 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 com.foxinmy.weixin4j.util.StringUtil; import io.renren.common.exception.RRException; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.web.multipart.MultipartFile; 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; public class FileUtil { public static final String[] EXCEL_EXT = {"xls","xlsx"}; 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)); } /** * 一個excel 建立多個sheet * * @param list 多個Map key title 對應表格Title key entity 對應表格對應實體 key data * Collection 資料 * @param fileName * @param response */ 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 RRException(e.getMessage()); } } /** * 一個excel 建立多個sheet * * @param list 多個Map key title 對應表格Title key entity 對應表格對應實體 key data * Collection 資料 * @param fileName * @param response */ 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 RRException("模板不能為空"); } catch (Exception e) { e.printStackTrace(); throw new RRException(e.getMessage()); } return list; } 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 RRException("excel檔案不能為空"); } catch (Exception e) { throw new RRException(e.getMessage()); } return list; } /** * 檢查檔名是否符合要求 * @param fileName 待監測檔名 * @param exts 字尾名集合 * @return */ public static boolean checkExt(String fileName,String[] exts){ if (StringUtil.isBlank(fileName)) throw new RRException("待校驗檔名不能為空"); if (exts == null || exts.length == 0) throw new RRException("檔案字尾名陣列不能為空"); String ext = fileName.substring(fileName.lastIndexOf(".")+1); for (int i = 0;i<exts.length;i++){ if (ext.equals(exts[i])){ return true; } } return false; } public static void main(String[] args) { // List<category> people = importExcel("F://students.xlsx",1,1,category.class); // System.out.println(FastJsonUtils.toJSONString(people)); } }