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

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 使用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的热门话题分析
          本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
          SaaS 模式云数据仓库必修课
          本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
          相关文章
          |
          1月前
          |
          Java API Apache
          Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
          【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
          141 5
          |
          2月前
          |
          数据处理 Python
          Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
          这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
          117 3
          Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
          |
          6月前
          |
          Java 数据库 数据安全/隐私保护
          Java操作Excel文件导入导出【内含有 jxl.jar 】
          Java操作Excel文件导入导出【内含有 jxl.jar 】
          94 0
          |
          4月前
          内存或磁盘不足,excel无法再次打开或保存任何文档
          内存或磁盘不足,excel无法再次打开或保存任何文档
          104 2
          |
          4月前
          |
          开发框架 算法 .NET
          C#使用MiniExcel导入导出数据到Excel/CSV文件
          C#使用MiniExcel导入导出数据到Excel/CSV文件
          110 0
          |
          6月前
          |
          Java easyexcel
          java开发excel导入导出工具类基于EasyExcel
          java开发excel导入导出工具类基于EasyExcel
          331 1
          VBA如何用Excel数据批量生成Word文档
          VBA|用Excel数据批量生成并修改用模板创建的Word文档
          |
          6月前
          |
          Java API Spring
          集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
          集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
          584 1
          |
          6月前
          |
          easyexcel Java API
          SpringBoot集成EasyExcel 3.x:高效实现Excel数据的优雅导入与导出
          SpringBoot集成EasyExcel 3.x:高效实现Excel数据的优雅导入与导出
          1216 1
          |
          6月前
          |
          前端开发 Java 开发工具
          如何在Spring Boot框架下实现高效的Excel服务端导入导出?
          ArtifactId:是项目的唯一标识符,在实际开发中一般对应项目的名称,就是项目根目录的名称。 Group Id,Artfact Id是保证项目唯一性的标识,一般来说如果项目打包上传至maven这样的包管理仓库中。在搜索你的项目时,Group Id,Artfact Id是必要的条件。 Version:版本号,默认0.0.1-SNAPSHOT。SNAPSHOT代表不稳定的版本,与之相对的有RELEASE。 Project type:工程的类型,maven工程还是gradle工程。 Language:语言(Java,Kotlin,Groovy)。