• easyPoi 工具类


    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.stereotype.Component;
    import org.springframework.web.multipart.MultipartFile;
    
    import javax.annotation.PostConstruct;
    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;
    
    @Component
    public class EasyPoiUtils {
    
        /*@Autowired
        IExportLogService exportLogService;*/
    
        private static EasyPoiUtils EasyPoiUtils;
    
        @PostConstruct
        public void init() {
            EasyPoiUtils = this;
        }
    
        public static void sellerExportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, HttpServletResponse response) {
            defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName));
        }
    
        /**
         * 功能描述:复杂导出Excel,包括文件名以及表名。创建表头
         *
         * @param list 导出的实体类
         * @param title 表头名称
         * @param sheetName sheet表名
         * @param pojoClass 映射的实体类
         * @param isCreateHeader 是否创建表头
         * @param fileName
         * @param response
         * @return
         */
        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);
        }
    
    
        /**
         * 功能描述:复杂导出Excel,包括文件名以及表名,不创建表头
         *
         * @param list 导出的实体类
         * @param title 表头名称
         * @param sheetName sheet表名
         * @param pojoClass 映射的实体类
         * @param fileName
         * @param response
         * @return
         */
    /*    public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, HttpServletResponse response,Integer userMasterId) {
            defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName));
            //导出日志
            ExportLogVO exportLogVO = new ExportLogVO();
            exportLogVO.setUserMasterId(userMasterId);
            exportLogVO.setCreateTime(new Date());
            exportLogVO.setExportTypeName(title);
            exportLogVO.setFileName(fileName);
            EasyPoiUtils.exportLogService.insert(exportLogVO);
        }*/
    
        /**
         * 功能描述:Map 集合导出
         *
         * @param list 实体集合
         * @param fileName 导出的文件名称
         * @param response
         * @return
         */
        public static void exportExcel(List<Map<String, Object>> list, String fileName, HttpServletResponse response) {
            defaultExport(list, fileName, response);
        }
    
        /**
         * 功能描述:默认导出方法
         *
         * @param list 导出的实体集合
         * @param fileName 导出的文件名
         * @param pojoClass pojo实体
         * @param exportParams ExportParams封装实体
         * @param response
         * @return
         */
        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);
            }
        }
    
        /**
         * 功能描述:Excel导出
         *
         * @param fileName 文件名称
         * @param response
         * @param workbook Excel对象
         * @return
         */
        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  RuntimeException(e);
            }
        }
    
        /**
         * 功能描述:默认导出方法
         *
         * @param list 导出的实体集合
         * @param fileName 导出的文件名
         * @param response
         * @return
         */
        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);
        }
    
    
        /**
         * 功能描述:根据文件路径来导入Excel
         *
         * @param filePath 文件路径
         * @param titleRows 表标题的行数
         * @param headerRows 表头行数
         * @param pojoClass Excel实体类
         * @return
         */
        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 RuntimeException("模板不能为空");
            } catch (Exception e) {
                e.printStackTrace();
    
            }
            return list;
        }
    
        /**
         * 功能描述:根据接收的Excel文件来导入Excel,并封装成实体类
         *
         * @param file 上传的文件
         * @param titleRows 表标题的行数
         * @param headerRows 表头行数
         * @param pojoClass Excel实体类
         * @return
         */
        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 RuntimeException("excel文件不能为空");
            } catch (Exception e) {
                throw new RuntimeException(e.getMessage());
    
            }
            return list;
        }
    }
    
       /*     try {
            List<SellerVO> sellerVOList = sellerService.easyPoiExport(map);
            String typeName = "全部商家";
            String fileName = typeName + "-" + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + ".xls";
            EasyPoiUtils.exportExcel(sellerVOList, "全部商家", typeName, SellerVO.class, fileName, response, userMasterVO.getId());
            } catch (Exception e) {
            e.printStackTrace();
            return StringUtil.getReturnMsg(false, "导出失败");
            }
            return StringUtil.getReturnMsg(true, "导出成功");*/
  • 相关阅读:
    [转]让搜索跨越语言的鸿沟—谈跨语言信息检索技术
    【PRML读书笔记-Chapter1-Introduction】1.6 Information Theory
    【PRML读书笔记-Chapter1-Introduction】1.5 Decision Theory
    [科研小记]
    【PRML读书笔记-Chapter1-Introduction】1.4 The Curse of Dimensionality
    【Machine Learning】wekaの特征选择简介
    【PRML读书笔记-Chapter1-Introduction】1.3 Model Selection
    【迁移学习】2010-A Survey on Transfer Learning
    【Machine Learning】机器学习の特征
    【PRML读书笔记-Chapter1-Introduction】1.2 Probability Theory
  • 原文地址:https://www.cnblogs.com/-mzh/p/12802223.html
Copyright © 2020-2023  润新知