再见 EasyExcel !

科技   2024-11-11 15:45   安徽  

👉 欢迎加入小哈的星球,你将获得: 专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17..., 点击查看项目介绍
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2期已完结,演示链接:http://116.62.199.48/;

截止目前,累计输出 65w+ 字,讲解图 2776+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,Spring Cloud Alibaba 等等,戳我加入学习,解锁全部项目,已有2300+小伙伴加入


最近阿里发布公告通知,停止对EasyExcel 更新和维护,EasyExcel 是一款知名的 Java Excel 工具库,由阿里巴巴开源,作者是玉箫,在 GitHub 上有 30k+ stars、7.5k forks。


据了解,EasyExcel作者玉箫去年已经从阿里离职,开始创业,也是开源数据库客户端 Chat2DB 的作者。






 EasyExcel的诞生与初衷

在2016年,我作为开发者参与了一个电商后台系统的搭建,这个系统需要处理大量的业务数据,经常涉及到Excel文件的批量导入和导出。然而,随着数据量的激增,Apache POI在Excel处理方面的局限性开始显现出来,尤其是它的内存占用过高,导致系统频繁出现内存溢出。这种情况不仅影响了开发效率,更使得我们的业务进程无法顺利推进。面对这个问题,我开始深入研究Apache POI的内存管理机制,试图找到一种方法优化其在大数据环境中的表现。

我的思考点是,如何能够在不影响POI核心功能的情况下,开发出一个高效的工具,以便在处理数百万条Excel数据时保持内存稳定性。这个过程花费了很多时间和精力,尤其是周末和晚上,我时常会在图书馆和实验室内逐步测试不同方案,终于找到了一个可行的优化方法。这个工具就是EasyExcel的雏形。

EasyExcel技术创新的突破


EasyExcel的技术核心在于解决大数据量下的内存优化问题。与传统Excel解析方法相比,EasyExcel采用了流式读取模式,通过将数据流切分成小片段进行处理,从而降低了单次读取的内存开销。这一创新使得EasyExcel能够轻松应对数十万甚至上百万行的数据操作。

在实现流式读取时,我对内存管理做了大量实验,最终选择了基于字节流的分片式数据管理方法,确保每次仅加载所需的数据片段到内存。除此之外,EasyExcel设计了极简的API,让开发者仅需一行代码便能完成Excel数据的读取和写入。例如,EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).sheet().doRead();,这行代码实现了传统方法中需要几十行代码才能完成的操作。开发者不再需要关心复杂的Excel操作细节,而是专注于业务逻辑,大大提升了开发体验。



EasyExcel的开源之路

最初,EasyExcel仅仅是为了满足内部需求,但随着越来越多阿里同事开始使用并反馈需求,我意识到这个工具可能会对更多开发者产生帮助。我在阿里技术社区(ATA)上发表了一篇文章,详细介绍了EasyExcel的实现原理和应用场景。很快,其他部门的同事纷纷找到我,询问是否可以共享代码,因为他们在项目中遇到了相同的问题。

有一次,凌晨时分,我接到一位同事的电话,他的系统因大数据Excel导出操作而崩溃,急需解决方案。我立即分享了EasyExcel的代码,并协助其成功解决问题。这样的场景不断重复,促使我决定将EasyExcel从业务代码中抽离出来,独立成一个开源项目,并在2018年初正式面向社区。我的初衷很简单,希望帮助更多开发者免于Excel大数据操作的困扰。

开源心路历程与EasyExcel的广泛应用


从EasyExcel开源的那一刻起,责任就变得更大。开源不仅是代码的共享,更是为用户提供可持续支持的一种承诺。过去六年中,EasyExcel关闭了超过3000个issue,每隔两天我都会对社区反馈的问题做出回复或修复。这种高强度的维护并不是为了“造轮子”,而是为了切实解决开发者的实际需求。

EasyExcel不仅在国内获得了广泛应用,也逐渐在国际上引起了关注。通过与社区用户的交流,我意识到它在金融、教育、电商等多个行业的价值。许多企业将EasyExcel集成到自己的系统中,有效避免了大量数据导入和导出过程中遇到的性能瓶颈。



阿里巴巴对开源的贡献

阿里巴巴多年来在开源领域的贡献是显著的,这不仅体现在EasyExcel上,还包括Dubbo、Seata、RocketMQ等一系列广受好评的项目。这些开源项目极大地推动了国内技术生态的进步,使得本土开发者可以在世界领先的技术基础上开发创新的应用。

在阿里的支持下,EasyExcel得以在资源和技术上获得足够的保障,使得它能够持续迭代和优化。阿里的开源团队在项目推广、用户反馈和技术支持上给予了我极大的帮助,这使得我能够专注于代码的优化和改进。

👉 欢迎加入小哈的星球,你将获得: 专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17..., 点击查看项目介绍
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2期已完结,演示链接:http://116.62.199.48/;

截止目前,累计输出 65w+ 字,讲解图 2776+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,Spring Cloud Alibaba 等等,戳我加入学习,解锁全部项目,已有2300+小伙伴加入


1. 我的私密学习小圈子,从0到1手撸企业实战项目!

2. 高手必会的 IDEA Debug 使用技巧,你都用过吗?

3. 面试官:业务开发时,接口不能对外暴露怎么办?

4. SpringBoot + minio + kkfile 实现文件预览

最近面试BAT,整理一份面试资料Java面试BATJ通关手册,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。

获取方式:点“在看”,关注公众号并回复 Java 领取,更多内容陆续奉上。

PS:因公众号平台更改了推送规则,如果不想错过内容,记得读完点一下在看,加个星标,这样每次新文章推送才会第一时间出现在你的订阅列表里。

“在看”支持小哈呀,谢谢啦


Java学习者社区
专注于Java领域干货分享,不限于BAT面试,算法,数据库,SpringBoot,微服务,高并发,JVM,Docker容器,ELK相关知识,期待与您一同进步。
 最新文章