使用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的热门话题分析
          本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
          SaaS 模式云数据仓库必修课
          本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
          相关文章
          |
          4天前
          |
          Java Apache
          EasyPOI操作Excel从零入门
          我们不造轮子,只是轮子的搬运工。(其实最好是造轮子,造比别人好的轮子)开发中经常会遇到excel的处理,导入导出解析等等,java中比较流行的用poi,但是每次都要写大段工具类来搞定这事儿,此处推荐一个别人造好的轮子,EasyPOI封装了Apache的POI技术,实现了基本的Excel导入、导出从此不再为Excel操作头疼~
          334 2
          EasyPOI操作Excel从零入门
          |
          4天前
          |
          API
          Poi 中文API文档 「40种操作 Excel文件的姿势」
          Poi 中文API文档 「40种操作 Excel文件的姿势」
          147 0
          |
          4天前
          |
          easyexcel Java 测试技术
          用 EasyExcel 实现 Excel 的导入导出
          用 EasyExcel 实现 Excel 的导入导出
          225 0
          |
          4天前
          |
          前端开发
          Excel轻松操控:掌握EasyPoi的妙用技巧(三)
          Excel轻松操控:掌握EasyPoi的妙用技巧
          19 1
          |
          4天前
          |
          Java
          Excel轻松操控:掌握EasyPoi的妙用技巧(二)
          Excel轻松操控:掌握EasyPoi的妙用技巧
          131 1
          |
          4天前
          |
          Java 数据库 Maven
          Excel轻松操控:掌握EasyPoi的妙用技巧(一)
          Excel轻松操控:掌握EasyPoi的妙用技巧
          194 4
          |
          4天前
          |
          Web App开发 JavaScript 前端开发
          2024年纯前端VUE在线编辑微软Office/金山WPS的Word/Excel文档
          现在,随着数字化进程渗透到到各行各业,数据安全已经成为了数字化革命中的重要组成部分,而在线Office成在OA、ERP、文档系统中得到了广泛的应用,为我国的信息化事业也做出了巨大贡献。随着操作系统、浏览器及Office软件的不断升级和更新换代,加上国家对信息化、数字化系统要求的不断提升,一些厂家的WebOffice控件产品不断被淘汰出局,而现存的几个产品也存在以下几个问题:
          453 1
          2024年纯前端VUE在线编辑微软Office/金山WPS的Word/Excel文档
          |
          4天前
          |
          Java Linux 数据安全/隐私保护
          Java【代码 16】将word、excel文件转换为pdf格式和将pdf文档转换为image格式工具类分享(Gitee源码)aspose转换中文乱码问题处理
          【2月更文挑战第3天】Java 将word、excel文件转换为pdf格式和将pdf文档转换为image格式工具类分享(Gitee源码)aspose转换中文乱码问题处理
          131 0
          |
          4天前
          |
          Java easyexcel Maven
          【Java专题_04】集成EasyExcel进行Excel导入导出详细教程
          【Java专题_04】集成EasyExcel进行Excel导入导出详细教程
          139 0
          |
          4天前
          |
          Python
          Python办公自动化【Excel查询重复数据、Excel提取身份证号信息、Python操作Excel模块库文档、Python操作Word基础 】(四)-全面详解(学习总结---从入门到深化)
          Python办公自动化【Excel查询重复数据、Excel提取身份证号信息、Python操作Excel模块库文档、Python操作Word基础 】(四)-全面详解(学习总结---从入门到深化)
          54 0