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; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 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; 
 | 
    } 
 | 
} 
 |