zoukankan      html  css  js  c++  java
  • 基于easypoi 导出demo

      资料:http://easypoi.mydoc.io/#text_186905

    直接上代码:

    导入依赖:

        <!--easyPoi-->
    </dependency>
    <dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-spring-boot-starter</artifactId>
    <version>4.1.0</version>
    </dependency>
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <!--<scope>provided</scope>-->
    </dependency>

    工具类:

    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.poi.ss.usermodel.Workbook;
    import org.springframework.web.multipart.MultipartFile;

    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.URLEncoder;
    import java.util.List;
    import java.util.Map;
    import java.util.NoSuchElementException;

    public class ExcelUtils {

    /**
    * 默认的 excel 导出
    *
    * @param list 数据
    * @param pojoClass pojo类型
    * @param fileName 文件名称
    * @param response
    * @param exportParams 导出参数
    */
    private static void defaultExport(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response, ExportParams exportParams) throws IOException {
    Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list);
    downLoadExcel(fileName, response, workbook);
    }

    /**
    * 默认的 excel 导出
    *
    * @param list 数据
    * @param pojoClass pojo类型
    * @param fileName 文件名称
    * @param response
    * @param exportParams 导出参数
    */
    private static void defaultExportXSSF(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response, ExportParams exportParams) throws IOException {
    Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list);
    downLoadExcelXSSF(fileName, response, workbook);
    }

    /**
    * 默认的 excel 导出
    *
    * @param list 数据
    * @param fileName 文件名称
    * @param response
    */
    public static void defaultExport(List<Map<String, Object>> list, String fileName, HttpServletResponse response) throws IOException {
    Workbook workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF);
    downLoadExcel(fileName, response, workbook);
    }

    /**
    * 下载
    *
    * @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 + "." + ExcelTypeEnum.XLS.getValue(), "UTF-8"));
    workbook.write(response.getOutputStream());
    } catch (Exception e) {
    throw new IOException(e.getMessage());
    }
    }

    /**
    * 下载
    *
    * @param fileName 文件名称
    * @param response
    * @param workbook excel数据
    */
    private static void downLoadExcelXSSF(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 + "." + ExcelTypeEnum.XLSX.getValue(), "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 file excel文件
    * @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 {
    return importExcel(file, titleRows, headerRows, false, pojoClass);
    }

    /**
    * excel 导入
    *
    * @param file 上传的文件
    * @param titleRows 标题行
    * @param headerRows 表头行
    * @param needVerfiy 是否检验excel内容
    * @param pojoClass pojo类型
    * @param <T>
    * @return
    */
    public static <T> List<T> importExcel(MultipartFile file, Integer titleRows, Integer headerRows, boolean needVerfiy, Class<T> pojoClass) throws IOException {
    if (file == null) {
    return null;
    }
    try {
    return importExcel(file.getInputStream(), titleRows, headerRows, needVerfiy, pojoClass);
    } catch (Exception e) {
    throw new IOException(e.getMessage());
    }
    }

    /**
    * excel 导入
    *
    * @param inputStream 文件输入流
    * @param titleRows 标题行
    * @param headerRows 表头行
    * @param needVerfiy 是否检验excel内容
    * @param pojoClass pojo类型
    * @param <T>
    * @return
    */
    public static <T> List<T> importExcel(InputStream inputStream, Integer titleRows, Integer headerRows, boolean needVerfiy, Class<T> pojoClass) throws IOException {
    if (inputStream == null) {
    return null;
    }
    ImportParams params = new ImportParams();
    params.setTitleRows(titleRows);
    params.setHeadRows(headerRows);
    params.setSaveUrl("/excel/");
    params.setNeedSave(true);
    params.setNeedVerify(needVerfiy);
    try {
    return ExcelImportUtil.importExcel(inputStream, pojoClass, params);
    } catch (NoSuchElementException e) {
    throw new IOException("excel文件不能为空");
    } catch (Exception e) {
    throw new IOException(e.getMessage());
    }
    }

    /**
    * Excel 类型枚举
    */
    enum ExcelTypeEnum {
    XLS("xls"), XLSX("xlsx");
    private String value;

    ExcelTypeEnum(String value) {
    this.value = value;
    }

    public String getValue() {
    return value;
    }

    public void setValue(String value) {
    this.value = value;
    }
    }
    }
    实体类

     这里的@ExcelTarget 表示使用user这个对象是可以针对不同字段做不同处理 

    @Excel

    这个是必须使用的注解,如果需求简单只使用这一个注解也是可以的,涵盖了常用的Excel需求

     

     

     

     控制层

     服务层

     结果:

  • 相关阅读:
    ul做导航栏
    论布局,bfc,margin塌陷和合并,经典bug
    mon-hom
    新浪下拉菜单模仿
    JQ筛选方法,筛选父子元素
    JQuery筛选选择器
    JQuery隐式迭代
    python 和 C# DES加密
    交互设计[1]--设计心理学
    javascript学习(9)——[设计模式]单例
  • 原文地址:https://www.cnblogs.com/yangxiaoli/p/12711640.html
Copyright © 2011-2022 走看看