excel系列(二) - 利用 easypoi 快速实现 excel 文件导入导出

07-19 1011阅读

一、介绍

在上篇文章中,我们介绍了 apache poi 工具实现 excel 文件的导入导出。

本篇我们继续深入介绍另一款优秀的 excel 工具库:easypoi。

二、easypoi

以前的以前,有个大佬程序员,跳到一家公司之后就和业务人员聊上了,这些业务员对excel报表有着许许多多的要求,比如想要一个报表,他的表头是一个多行表头,过几天之后,他想要给这些表头添加样式,比如关键的数据标红,再过几天,他想要再末尾添加一条合计的数据,等等!

起初还好,都是copy、copy,之后发现系统中出现大量的重复代码,于是有一天真的忍受不了了,采用注解搞定来搞定这些定制化成程度高的逻辑,将公共化抽离出来,于是诞生了 easypoi!

easypoi 的底层也是基于 apache poi 进行深度开发的,它主要的特点就是将更多重复的工作,全部简单化,避免编写重复的代码!

下面,我们就一起来了解一下这款高大上的开源工具:easypoi

3.1、首先添加依赖包
    
        cn.afterturn
        easypoi-base
        4.1.0
    
    
        cn.afterturn
        easypoi-web
        4.1.0
    
    
        cn.afterturn
        easypoi-annotation
        4.1.0
    

3.2、采用注解导出导入

easypoi 最大的亮点就是基于注解实体类来导出、导入excel,使用起来非常简单!

首先,我们创建一个实体类UserEntity,其中@Excel注解表示导出文件的头部信息。

public class UserEntity {
    @Excel(name = "姓名")
    private String name;
    @Excel(name = "年龄")
    private int age;
    @Excel(name = "操作时间",format="yyyy-MM-dd HH:mm:ss", width = 20.0)
    private Date time;
    
    //set、get省略
}

接着,我们来编写导出服务!

public static void main(String[] args) throws Exception {
    List dataList = new ArrayList();
    for (int i = 0; i  

导出的文件预览如下:

excel系列(二) - 利用 easypoi 快速实现 excel 文件导入导出

对应的导入操作,也很简单,源码如下:

public static void main(String[] args) {
    ImportParams params = new ImportParams();
    params.setTitleRows(1);
    params.setHeadRows(1);
    long start = new Date().getTime();
    List list = ExcelImportUtil.importExcel(new File("/Users/hello/Documents/easypoi-user1.xls"),
            UserEntity.class, params);
    System.out.println(new Date().getTime() - start);
    System.out.println(JSONArray.toJSONString(list));
}

运行程序,输出结果如下:

[{"age":20,"name":"张三0","time":1616919493000},{"age":21,"name":"张三1","time":1616919493000},{"age":22,"name":"张三2","time":1616919493000},{"age":23,"name":"张三3","time":1616919493000},{"age":24,"name":"张三4","time":1616919493000},{"age":25,"name":"张三5","time":1616919493000},{"age":26,"name":"张三6","time":1616919493000},{"age":27,"name":"张三7","time":1616919493000},{"age":28,"name":"张三8","time":1616919493000},{"age":29,"name":"张三9","time":1616919493000}]
3.3、自定义数据结构导出导入

easypoi 同样也支持自定义数据结构导出导入excel。

  • 自定义数据导出 excel
    public static void main(String[] args) throws Exception {
        //封装表头
        List entityList = new ArrayList();
        entityList.add(new ExcelExportEntity("姓名", "name"));
        entityList.add(new ExcelExportEntity("年龄", "age"));
        ExcelExportEntity entityTime = new ExcelExportEntity("操作时间", "time");
        entityTime.setFormat("yyyy-MM-dd HH:mm:ss");
        entityTime.setWidth(20.0);
        entityList.add(entityTime);
        //封装数据体
        List dataList = new ArrayList();
        for (int i = 0; i  
    
    • 导入 excel
      public static void main(String[] args) {
          ImportParams params = new ImportParams();
          params.setTitleRows(1);
          params.setHeadRows(1);
          long start = new Date().getTime();
          List list = ExcelImportUtil.importExcel(new File("/Users/panzhi/Documents/easypoi-user2.xls"),
                  Map.class, params);
          System.out.println(new Date().getTime() - start);
          System.out.println(JSONArray.toJSONString(list));
      }
      

      更多的 api 操作可以访问 Easypoi - 接口文档

      三、小结

      总体来说,easypoi 在读写数据的时候,优先是先将数据写入内存,优点是读写性能非常高,但是当数据量很大的时候,会出现oom,当然它也提供了 sax 模式的读写方式,需要调用特定的方法实现。

      四、参考

      1、apache poi - 接口文档

      2、easypoi - 接口文档

      3、easyexcel - 接口文档

      写到最后

      不会有人刷到这里还想白嫖吧?点赞对我真的非常重要!在线求赞。加个关注我会非常感激!

      本文已整理到技术笔记中,此外,笔记内容还涵盖 Spring、Spring Boot/Cloud、Dubbo、JVM、集合、多线程、JPA、MyBatis、MySQL、微服务等技术栈。

      excel系列(二) - 利用 easypoi 快速实现 excel 文件导入导出

      需要的小伙伴可以点击 技术笔记 获取!

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]