阅读 185

海量数据Excel报表利器——EasyExcel(开场篇)

海量数据Excel报表利器——EasyExcel(开场篇)

互联网的精髓就是共享,可以共享技术、共享经验、共享情感、共享快乐~

很多年前就有这个想法了,从事IT行业时间也不短了,应该把自己工作和业余所学习的东西记录并分享出来,和有缘人一起学习和交流。

如果您是那个有缘人,请上岛一叙!爪哇岛随时欢迎您!


一、简介

咱们传统Excel的操作或者数据解析都是利用Apach POI进行操作,有使用过POI经验的同学应该都了解,POI框架并不完美,有较多的缺陷:

  • 操作Excel步骤繁琐
    核心组件:Workbook、Sheet、Row、Cell
    读取数据时对于不同数据类型的数据处理非常麻烦

  • 导出动态Excel的操作更是麻烦

  • 学习成本较高,对于新手来说很难在短时间上手

  • 性能问题比较明细,特别是在海量数据场景下,经常出现内存OOM问题
    写HSSF(6.5w内),最多只能处理 65536 行,否则会抛出异常;
    写XSSF(100w内),写数据时速度非常慢,非常耗内存,经常发生内存溢出;
    写SXSSF(100w+),过程总会产生临时文件,需要清理临时文件;使用高阶功能(区域合并、注释、动态数据)仍然非常耗内存;

阿里巴巴项目组开源出来了一款更容易上手且性能更高的Excel操作框架:EasyExcel,它以使用简单、节省内存著称。它可以支持:

  • 基础表格的导入导出

  • 图片数据的导入导出

  • 百万数据的导入导出

读写操作核心: 注解 + List + API封装

官方地址:https://alibaba-easyexcel.github.io/quickstart/write.html
API + 注解: https://alibaba-easyexcel.github.io/quickstart/api.html

二、性能评测【数据量级:2个属性,80w】

1. 实测结果【数量级:2列数据,80万】

** POI【3.10-FINAL】:**

EasyExcel【1.1.2-beta4】

2. 数据读取机制对比

数据读取

  • POI读取数据时会先将数据全部加载到内存中,然后返回给调用者,当数据量比较大时,容易发生OOM;

  • EasyExcel读取数据时采用SAX模式,逐行解析,将解析结果通过观察者模式通知处理,数据量较大时也不会发生OOM;

三、为什么选择EasyExcel

  1. 性能方面

64M内存1分钟内读取75M(46W行25列)

  1. 功能方面

  • 读Excel

    • 指定列的index和列名 ExcelProperty注解【index、value】

    • 读取多个sheet

    • 数据格式自定义转换器(xxxFormat注解、converter属性)

    • 多行head头

    • 通过List集合读取数据(不用对象读取)

    • 读取Web浏览器数据

  • 写Excel

    • 根据参数导出指定列

    • 复杂表头写入(合并、多级头、动态表头)

    • 多个sheet写入

    • 数据格式自定义转换

    • 图片导出

    • 根据模板导出

    • 自定义行列样式(尺寸、合并、颜色、排序、下拉、筛选、超链接等)

    • 使用Table方式导出

    • 自定义拦截器

    • 通过List集合读取数据(不用对象读取)

    • Web浏览器写入

  1. 学习成本

  • 阿里巴巴提供官方Demo示例文档

  • API结构易理解,上手快

  • 语雀社区提供持续更新维护,当前最新版本更新到2.2.8

四、结束语

如果你的项目中也有Excel的导入导出操作,EasyExcel是一个不错的选择。关于EasyExcel我在最近的项目中使用到一些高阶的内容,我会分篇将我的使用及心得分享出来,一起借鉴学习。

爪哇岛盛产最前沿的IT技术栈,欢迎广大IT同仁入岛学习分享

来源https://www.cnblogs.com/it-rabbit-cyj/p/14966325.html

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐