使用EasyPoi轻松导入导出Excel文档

简介: 使用EasyPoi轻松导入导出Excel文档

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

 

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

一、EasyPoi简介

官网:JueYue

文档: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直接编辑,完美的避开了代码编写样式的雷区,同时指令的支持,也提了模板的有效性。就像下面这样使用,具体用法请看文档。

          image.gif编辑

          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的功能强大,文档和示例代码丰富,大家在开发中如果有类似的需求,不妨一试。

          相关实践学习
          基于MaxCompute的热门话题分析
          Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
          相关文章
          |
          数据挖掘 数据库 Python
          Django实战:基于Django和openpyxl实现Excel导入导出功能
          `openpyxl` 是用于处理 Excel 文件的 Python 库。本文详解其在 Django 项目中的实战应用,涵盖 Excel 文件的生成、下载、上传与解析。
          556 0
          Django实战:基于Django和openpyxl实现Excel导入导出功能
          |
          Java API Apache
          Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
          【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
          1337 5
          |
          小程序
          公众号如何添加附传Word、Excel、Pdf、PPT文档
          公众号里添加一些文档给公众号粉丝下载,比如课件PPT、申请表Word文档、岗位需求Excel表、大赛入围/获奖名单等。公众号本身是不支持直接上传文件的,但我们可以通过附件小程序“间接”上传文件。
          1762 0
          |
          Java 数据库 数据安全/隐私保护
          Java操作Excel文件导入导出【内含有 jxl.jar 】
          Java操作Excel文件导入导出【内含有 jxl.jar 】
          347 0
          |
          数据处理 Python
          Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
          这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
          1037 3
          Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
          内存或磁盘不足,excel无法再次打开或保存任何文档
          内存或磁盘不足,excel无法再次打开或保存任何文档
          621 2
          VBA如何用Excel数据批量生成Word文档
          VBA|用Excel数据批量生成并修改用模板创建的Word文档
          |
          Java easyexcel
          java开发excel导入导出工具类基于EasyExcel
          java开发excel导入导出工具类基于EasyExcel
          1028 1
          |
          Java API Spring
          集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
          集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
          1693 1
          |
          开发框架 算法 .NET
          C#使用MiniExcel导入导出数据到Excel/CSV文件
          C#使用MiniExcel导入导出数据到Excel/CSV文件
          832 0

          热门文章

          最新文章