使用EasyPoi轻松导入导出Excel文档的方法示例

 更新时间:2019年12月17日 10:10:24   作者:十步杀一人_千里不留行  
这篇文章主要介绍了使用EasyPoi轻松导入导出Excel文档的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

提到Excel的导入导出,大家肯定都知道alibaba开源的EasyExcel,该项目的github地址为:https://github.com/alibaba/easyexcel

这个项目非常活跃,项目诞生的目的就是为了简化开发、降低内存消耗。我项目中也用过,但还是有一些槽点的,比如文档很简陋,功能做的不完善,不支持图片的读取等。所以,今天给大家推荐另外一款Excel处理的工具:EasyPoi。

一、EasyPoi简介

官网:http://www.afterturn.cn/

文档:http://easypoi.mydoc.io/

EasyPoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法 ,不如poi那么自定义,不如jxl那么多标签,但是我们就是写的少,写的少。

EasyPoi的主要特点

  1. 设计精巧,使用简单
  2. 接口丰富,扩展简单
  3. 默认值多,write less do more
  4. spring mvc支持,web导出可以简单明了

二、EasyPoi的功能介绍

Excel自适应xls和xlsx两种格式,word只支持docx模式,功能还是挺丰富的。

1.Excel导入

  • 注解导入
  • Map导入
  • 大数据量导入sax模式
  • 导入文件保存
  • 文件校验
  • 字段校验

2.Excel导出

  • 注解导出
  • 模板导出
  • html导出

3.Excel转html

4.word导出

5.pdf导出

三、重点功能介绍

1.注解

EasyPoi起因就是Excel的导入导出,最初的模板是实体和Excel的对应,model--row,filed--col 这样利用注解我们可以和容易做到excel到导入导出 经过一段时间发展,现在注解有5个类分别是

  • @Excel 作用到filed上面,是对Excel一列的一个描述
  • @ExcelCollection 表示一个集合,主要针对一对多的导出,比如一个老师对应多个科目,科目就可以用集合表示
  • @ExcelEntity 表示一个继续深入导出的实体,但他没有太多的实际意义,只是告诉系统这个对象里面同样有导出的字段
  • @ExcelIgnore 和名字一样表示这个字段被忽略跳过这个导导出
  • @ExcelTarget 这个是作用于最外层的对象,描述这个对象的id,以便支持一个对象可以针对不同导出做出不同处理

2.Excel 模板

模板是处理复杂Excel的简单方法,复杂的Excel样式,可以用Excel直接编辑,完美的避开了代码编写样式的雷区,同时指令的支持,也提了模板的有效性。就像下面这样使用,具体用法请看文档。

3.Excel<->Html的互转

4.Word模板导出

5.图片的导入导出

@Test//图片导入
public void test() {
        try {
            ImportParams params = new ImportParams();
            params.setNeedSave(true);
            List<CompanyHasImgModel> result = ExcelImportUtil.importExcel(
                    new File(PoiPublicUtil.getWebRootPath("import/imgexcel.xls")),
                    CompanyHasImgModel.class, params);
            for (int i = 0; i < result.size(); i++) {
                System.out.println(ReflectionToStringBuilder.toString(result.get(i)));
           }
            Assert.assertTrue(result.size() == 4);
       } catch (Exception e) {
            e.printStackTrace();
       }
   }
}
 //导出
 @Excel(name = "公司LOGO", type = 2 ,width = 40 , height = 20,imageType = 1)
    private String companyLogo;

6.Excel大数据导出

大数据导出是当我们的导出数量在几万,到上百万的数据时,一次从数据库查询这么多数据加载到内存然后写入会对我们的内存和CPU都产生压力,这个时候需要我们像分页一样处理导出分段写入Excel缓解Excel的压力 EasyPoi提供的是两个方法 强制使用 xssf版本的Excel 。具体代码看文档,我们看下资源占用即可:

多次测试用时统计,速度还是可以接受的。

数据量 用时 文件大小 列数
100W 16.4s 24.3MB 5
100W 15.9s 24.3MB 5
200W 29.5s 48.5MB 5
100W 30.8s 37.8MB 10
200W 58.7s 76.1MB 10

7.大数据导出View的用法

Easypoi view 项目是为了更简单的方便搭建在导出时候的操作,利用spring mvc 的view 封装,更加符合spring mvc的风格。EasypoiBigExcelExportView 是针对大数据量导出特定的View,在跳转到这个View的时候不需要查询数据,而且这个View自己去查询数据,用户只要实现IExcelExportServer接口就可以了 。

总结,Easypoi的功能强大,文档和示例代码丰富,大家在开发中如果有类似的需求,不妨一试。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 根据URL下载图片至客户端、服务器的简单实例

    根据URL下载图片至客户端、服务器的简单实例

    下面小编就为大家带来一篇根据URL下载图片至客户端、服务器的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • Java内存溢出和内存泄露

    Java内存溢出和内存泄露

    这篇文章主要介绍了Java内存溢出和内存泄露的相关资料,需要的朋友可以参考下
    2017-10-10
  • spring mvc DispatcherServlet之前端控制器架构详解

    spring mvc DispatcherServlet之前端控制器架构详解

    这篇文章主要为大家详细介绍了spring mvc DispatcherServlet之前端控制器架构,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • mybatis中的缓存问题解析

    mybatis中的缓存问题解析

    本篇文章主要介绍了mybatis中的缓存问题解析,详细的介绍了关于mybatis的一级缓存和二级缓存,具有一定的参考价值,有兴趣的可以了解一下。
    2017-04-04
  • springmvc图片上传及json数据转换过程详解

    springmvc图片上传及json数据转换过程详解

    这篇文章主要介绍了springmvc图片上传及json数据转换过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 详解Log4j 日志文件存放位置设置

    详解Log4j 日志文件存放位置设置

    这篇文章主要介绍了详解Log4j 日志文件存放位置设置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • SpringBoot初步连接redis详解

    SpringBoot初步连接redis详解

    这篇文章主要介绍了SpringBoot初步连接redis详解,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • Kotlin 单例实例详解

    Kotlin 单例实例详解

    这篇文章主要介绍了Kotlin 单例实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • java 线性表接口的实例详解

    java 线性表接口的实例详解

    这篇文章主要介绍了java 线性表接口的实现实例详解的相关资料,希望通过本能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • IDEA Debug模式下改变各类型变量值的方法

    IDEA Debug模式下改变各类型变量值的方法

    这篇文章主要介绍了IDEA Debug模式下改变各类型变量值的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04

最新评论