zoukankan      html  css  js  c++  java
  • java- excel工具类(EasyPoi)

    excel工具类

    EasyPoi

    1 导入依赖
    <!--        EasyPoiUtil导入依赖-->
            <dependency>
                <groupId>cn.afterturn</groupId>
                <artifactId>easypoi-base</artifactId>
                <version>4.1.0</version>
            </dependency>
            <dependency>
                <groupId>cn.afterturn</groupId>
                <artifactId>easypoi-web</artifactId>
                <version>4.1.0</version>
            </dependency>
            <dependency>
                <groupId>cn.afterturn</groupId>
                <artifactId>easypoi-annotation</artifactId>
                <version>4.1.0</version>
            </dependency>
    

    踩坑警告

    ​ 如果项目中已经有其他excel工具类的依赖了,则把本依赖放到后面,

    ​ EasyPoiUtil的版本尽量选择新一些的,避免导入数据问题

    2 工具类
    import cn.afterturn.easypoi.cache.manager.POICacheManager;
    import cn.afterturn.easypoi.excel.ExcelExportUtil;
    import cn.afterturn.easypoi.excel.ExcelImportUtil;
    import cn.afterturn.easypoi.excel.ExcelXorHtmlUtil;
    import cn.afterturn.easypoi.excel.entity.ExcelToHtmlParams;
    import cn.afterturn.easypoi.excel.entity.ExportParams;
    import cn.afterturn.easypoi.excel.entity.ImportParams;
    import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
    import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
    import cn.afterturn.easypoi.word.WordExportUtil;
    import cn.afterturn.easypoi.word.parse.ParseWord07;
    import org.apache.commons.lang3.StringUtils;
    import org.apache.poi.ss.usermodel.Workbook;
    import org.apache.poi.ss.usermodel.WorkbookFactory;
    import org.apache.poi.xwpf.usermodel.XWPFDocument;
    import org.springframework.web.multipart.MultipartFile;
    
    import javax.servlet.http.HttpServletResponse;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.URLEncoder;
    import java.util.List;
    import java.util.Map;
    import java.util.NoSuchElementException;
    
    /**
     * Excel导入导出工具类
     */
    
    public class ExcelUtils2 {
    
        /**
         * excel 导出
         *
         * @param list     数据列表
         * @param fileName 导出时的excel名称
         * @param response
         */
        public static void exportExcel(List<Map<String, Object>> list, String fileName, HttpServletResponse response) throws IOException {
            defaultExport(list, fileName, response);
        }
    
        /**
         * 默认的 excel 导出
         *
         * @param list     数据列表
         * @param fileName 导出时的excel名称
         * @param response
         */
        private static void defaultExport(List<Map<String, Object>> list, String fileName, HttpServletResponse response) throws IOException {
            //把数据添加到excel表格中
            Workbook workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF);
            downLoadExcel(fileName, response, workbook);
        }
    
        /**
         * excel 导出
         *
         * @param list         数据列表
         * @param pojoClass    pojo类型
         * @param fileName     导出时的excel名称
         * @param response
         * @param exportParams 导出参数(标题、sheet名称、是否创建表头,表格类型)
         */
        private static void defaultExport(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response, ExportParams exportParams) throws IOException {
            //把数据添加到excel表格中
            Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list);
            downLoadExcel(fileName, response, workbook);
        }
    
        /**
         * excel 导出
         *
         * @param list         数据列表
         * @param pojoClass    pojo类型
         * @param fileName     导出时的excel名称
         * @param exportParams 导出参数(标题、sheet名称、是否创建表头,表格类型)
         * @param response
         */
        public static void exportExcel(List<?> list, Class<?> pojoClass, String fileName, ExportParams exportParams, HttpServletResponse response) throws IOException {
            defaultExport(list, pojoClass, fileName, response, exportParams);
        }
    
        /**
         * excel 导出
         *
         * @param list      数据列表
         * @param title     表格内数据标题
         * @param sheetName sheet名称
         * @param pojoClass pojo类型
         * @param fileName  导出时的excel名称
         * @param response
         */
        public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, HttpServletResponse response) throws IOException {
            defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName, ExcelType.XSSF));
        }
    
    
    
        /**
         * excel 导出
         *
         * @param list           数据列表
         * @param title          表格内数据标题
         * @param sheetName      sheet名称
         * @param pojoClass      pojo类型
         * @param fileName       导出时的excel名称
         * @param isCreateHeader 是否创建表头
         * @param response
         */
        public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, boolean isCreateHeader, HttpServletResponse response) throws IOException {
            ExportParams exportParams = new ExportParams(title, sheetName, ExcelType.XSSF);
            exportParams.setCreateHeadRows(isCreateHeader);
            defaultExport(list, pojoClass, fileName, response, exportParams);
        }
    
    
        /**
         * excel下载
         *
         * @param fileName 下载时的文件名称
         * @param response
         * @param workbook excel数据
         */
        private static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) throws IOException {
            try {
                response.setCharacterEncoding("UTF-8");
                response.setHeader("content-Type", "application/vnd.ms-excel");
                response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName + ".xlsx", "UTF-8"));
                workbook.write(response.getOutputStream());
            } catch (Exception e) {
                throw new IOException(e.getMessage());
            }
        }
    
    
    
        /**
         * excel 导入
         *
         * @param file      excel文件
         * @param pojoClass pojo类型
         * @param <T>
         * @return
         */
        public static <T> List<T> importExcel(MultipartFile file, Class<T> pojoClass) throws IOException {
            return importExcel(file, 1, 1, pojoClass);
        }
    
        /**
         * excel 导入
         *
         * @param filePath   excel文件路径
         * @param titleRows  表格内数据标题行
         * @param headerRows 表头行
         * @param pojoClass  pojo类型
         * @param <T>
         * @return
         */
        public static <T> List<T> importExcel(String filePath, Integer titleRows, Integer headerRows, Class<T> pojoClass) throws IOException {
            if (StringUtils.isBlank(filePath)) {
                return null;
            }
            ImportParams params = new ImportParams();
            params.setTitleRows(titleRows);
            params.setHeadRows(headerRows);
    //        params.setNeedSave(true); //不保存
            params.setSaveUrl("/home/server/upload/excel/");
            try {
                return ExcelImportUtil.importExcel(new File(filePath), pojoClass, params);
            } catch (NoSuchElementException e) {
                throw new IOException("模板不能为空");
            } catch (Exception e) {
                throw new IOException(e.getMessage());
            }
        }
    
    
        /**
         * excel 导入
         *
         * @param file       上传的文件
         * @param titleRows  表格内数据标题行
         * @param headerRows 表头行
         * @param pojoClass  pojo类型
         * @param <T>
         * @return
         */
        public static <T> List<T> importExcel(MultipartFile file, Integer titleRows, Integer headerRows, Class<T> pojoClass) throws IOException {
            if (file == null) {
                return null;
            }
            try {
                return importExcel(file.getInputStream(), titleRows, headerRows, pojoClass);
            } catch (Exception e) {
                throw new IOException(e.getMessage());
            }
        }
    
        /**
         * excel 导入
         *
         * @param inputStream 文件输入流
         * @param titleRows   表格内数据标题行
         * @param headerRows  表头行
         * @param pojoClass   pojo类型
         * @param <T>
         * @return
         */
        public static <T> List<T> importExcel(InputStream inputStream, Integer titleRows, Integer headerRows, Class<T> pojoClass) throws IOException {
            if (inputStream == null) {
                return null;
            }
            ImportParams params = new ImportParams();
            params.setTitleRows(titleRows);
            params.setHeadRows(headerRows);
            params.setSaveUrl("/home/server/upload/excel/");
    //        params.setNeedSave(true);  //不保存
            try {
                return ExcelImportUtil.importExcel(inputStream, pojoClass, params);
            } catch (NoSuchElementException e) {
                throw new IOException("excel文件不能为空");
            } catch (Exception e) {
                throw new IOException(e.getMessage());
            }
        }
    }
    
    3 导入导出dto
    package com.fongtech.cli.mbg.model.dto;
    
    import cn.afterturn.easypoi.excel.annotation.Excel;
    import com.fongtech.cli.framework.model.BaseModel;
    import lombok.Data;
    import lombok.EqualsAndHashCode;
    import lombok.NoArgsConstructor;
    
    import java.math.BigDecimal;
    import java.util.Date;
    
    /**
     * @Author
     * @Time 2020/11/3 0003
     */
    @Data
    @NoArgsConstructor
    @EqualsAndHashCode(callSuper = false)
    public class CommodityImportDTO  extends BaseModel {
        /**
         * id
         */
        @Excel(name = "id")
        private Integer id;
        /**
         * image
         */
        @Excel(name = "image")
        private String image;
        /**
         * title
         */
        @Excel(name = "title")
        private String title;
        /**
         * asin
         */
        @Excel(name = "asin")
        private String asin;
        /**
         * storeName
         */
        @Excel(name = "storeName")
        private String storeName;
        /**
         * price
         */
        @Excel(name = "price")
        private String price;
        /**
         * currencySymbol
         */
        @Excel(name = "currencySymbol")
        private String currencySymbol;
        /**
         * country
         */
        @Excel(name = "country")
        private String country;
    
        /**
         * supportedReviewType
         */
        @Excel(name = "supportedReviewType")
        private String supportedReviewType;
    
        /**
         * startDate
         */
        @Excel(name = "startDate")
        private Date startDate;
        /**
         * endDate
         */
        @Excel(name = "endDate")
        private Date endDate;
        /**
         * dailyTotal
         */
        @Excel(name = "dailyTotal")
        private String dailyTotal;
        /**
         * total
         */
        @Excel(name = "total")
        private String total;
        /**
         * commission
         */
        @Excel(name = "commission")
        private String commission;
        /**
         * url
         */
        @Excel(name = "url")
        private String url;
        /**
         * productSpecification
         */
        @Excel(name = "productSpecification")
        private String productSpecification;
        /**
         * createdTime
         */
        @Excel(name = "createTime")
        private Date createdTime;
    
    
    }
    
    
  • 相关阅读:
    Android studio 一些技术添加依赖,依赖库
    第三方集成之Mob-SMSSDk-短信验证
    使用友盟第三方集成实现QQ登录
    Android 日夜间切换Demo
    Sqlite数据库添加数据以及查询数据方法
    从网络获取json数据,使用imageloader获取网络图片资源并显示在ListView上
    检测Xcode项目不用的文件与图片
    Markdown语法
    iOS动画
    OC与JS交互之WKWebView
  • 原文地址:https://www.cnblogs.com/superlinb/p/14886642.html
Copyright © 2011-2022 走看看