当前位置: 首页 >服务端 > 海量数据Excel报表利器——EasyExcel(开场篇)

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

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】:**
海量数据Excel报表利器——EasyExcel(开场篇) _ JavaClub全栈架构师技术笔记

EasyExcel【1.1.2-beta4】
海量数据Excel报表利器——EasyExcel(开场篇) _ JavaClub全栈架构师技术笔记

2. 数据读取机制对比

数据读取
海量数据Excel报表利器——EasyExcel(开场篇) _ JavaClub全栈架构师技术笔记
海量数据Excel报表利器——EasyExcel(开场篇) _ JavaClub全栈架构师技术笔记

  • POI读取数据时会先将数据全部加载到内存中,然后返回给调用者,当数据量比较大时,容易发生OOM;
  • EasyExcel读取数据时采用SAX模式,逐行解析,将解析结果通过观察者模式通知处理,数据量较大时也不会发生OOM;

三、为什么选择EasyExcel

  1. 性能方面

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

海量数据Excel报表利器——EasyExcel(开场篇) _ JavaClub全栈架构师技术笔记

  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_rabbit
来源链接:https://www.cnblogs.com/it-rabbit-cyj/p/14966325.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/server/68255.html

标签:EasyExcel
分享给朋友:

“海量数据Excel报表利器——EasyExcel(开场篇)” 的相关文章

easyexcel注解 2022年06月29日 23:28:03
(八)easyexcel的使用 2022年07月25日 20:48:36
easyexcel 小坑 2022年07月31日 20:40:04
使用EasyExcel导入导出Excel 2022年08月04日 14:12:15
EasyExcel的使用方法 2022年08月05日 15:00:16