6 年 30k star,这个明星项目停止更新!
大家好,我是程序员鱼皮。就在昨天,GitHub 上一个知名的开源项目 Easy Excel 官宣停止更新,下面是官方原文:

公告中表示,Easy Excel 将进入维护模式,会进行 Bug 修复,但不再主动新增功能。其实约等于停止更新了,只不过是一种委婉地表达罢了。
可能有同学还不了解 Easy Excel,这是国内主流的 Java 解析 Excel 的开源工具库,在 GitHub 上有 30k+ 的 star。能够帮助开发者用更少的内存从 Excel 中读取数据、或者生成 Excel 文件。官方测试只需要 16M 内存就能读取 75M(46W 行 25 列)的 Excel 文件!

我个人非常喜欢这个库,除了性能高之外,还有很多其他原因。首先是它提供了简单易用的 API 来读写 Excel,比如通过下面这行代码,就能获取到 Excel 中的数据了:
List<DemoData> list = EasyExcel.read(fileName)
.head(DemoData.class)
.sheet()
.doReadSync();
而且它的官方文档写得非常清晰,进一步降低了使用门槛。有一说一,咱们很多国产框架的文档写得都不错~

通过官方文档可以了解到,Easy Excel 支持同步和异步读取、自定义格式转换等操作,能够满足大多数常见的需求了。
我做技术选型时,除了性能和易用性之外,还会特别关注框架的生态和活跃度。很多框架可能做着做着,就突然不更新了,导致后面出了问题也没法解决,只能换一个技术,这种情况可以让开发者瞬间高血压。
Easy Excel 虽然只是一个工具库,但大家可能想象不到维护这样一个小项目,难度有多大。
可以看到该项目光是在 GitHub 上就有 3000 多个 Issues 问题,官方处理了 3000 多个,未处理的也基本很快就回复了。

从提交记录来看,这个项目维护了 6 年,平均每天都要处理几个问题,跟每日任务似的。也看得出来 Easy Excel 官方确实很用心地在维护这个项目,而不是所谓的 KPI 项目,点个赞 !
所谓的 KPI 项目,是指为了绩效或者晋升专门搞的项目,可能评完绩效或者晋升之后,就不再维护了。
这也是我乐意使用 Easy Excel 的原因,但是官方公告中的有一点我还挺在意的:

官方说市面上出现了很多的数据处理工具,我不禁在想,对处理 Excel 表格这个场景来说,还有哪些替代方案呢?
我调研了一些,比如:
1)Apache POI:老牌的文档处理库,被广泛使用于多个大型项目和企业,社区活跃。但内存占用较高,对于大文件的性能并不理想。
2)Excel4J:个人开源的 Excel 处理库,star 数不多,上次更新时间是去年,社区不活跃。
3)Aspose.Cells:功能强大,但是属于商业产品,需要购买许可证,我选择放弃。
4)opencsv:适用于处理 CSV 文件,但是看到它的文档我直接放弃。

逛了一圈下来,我还没有发现免费开源的 Easy Excel 的替代品。不过好在大家不用担心,Easy Excel 仍然是可以正常使用的,不需要急着去找替代方案。
大家有什么好用的数据处理工具、类库或框架么?欢迎评论区留言分享~
更多编程学习资源
6 年 30k star,这个明星项目停止更新!的更多相关文章
- 在github上查找star最多的项目
如何在github上查找star最多的项目 在search中输入stars:>1 就可以查找所有有star的项目,然后右上角根据自己的需要筛选 当我输入stars:>10000的时候,就会 ...
- 开发者最爱的Firebug停止更新和维护
近日,Firebug团队在其官网上宣布,Firebug将不再继续开发和维护,并邀请大家使用Firefox的内置开发工具. Firebug最初是2006年1月由Joe Hewitt编写, ...
- 关于 《cocoapods 的taobao的镜像停止更新问题》
cocoapods 的ruby.taobao.org 停止更新了!!!!!! 最近一直在改老项目,突然听伙伴说:cocoapods 的ruby.taobao.org 停止更新了.很是吃惊,遂即闯入:h ...
- [置顶] 博客停止更新 && 我的大学数年
博客停止更新 前言: 这些天,一直还没有时间发表这篇博文,近期,做了一个决定:博客更新停止. 我有话说: 这些天来,还真是感谢大家的关注了.从2011年的07至今,2013年的07月,两个年头,写下了 ...
- 本博客停止更新,移至purecpp.org
声明:本博客停止更新,迁移至C++开源社区purecpp.org, 欢迎持续关注!
- 本博客迁移到Github,之后停止更新
本博客之后停止更新或者更新不是很及时,关注博客请移步 http://waylife.github.io 或者 http://blog.13kbook.com 谢谢支持. Update Time ...
- xp的停止更新对我们有什么影响?
微软与2001年推出windows xp系统,这款系统的成功毋庸置疑,但由于太过成功,微软在随后推出的vista系统和win7系统普及起来却异常困难.大多数人已经习惯了xp的操作,再加上一批铁杆旧电脑 ...
- iOS:开发常用GitHub开源项目(持续更新)
IOS开发常用GitHub开源项目(持续更新) 数据类 开源库 作者 简介 AFNetworking Mattt 网络请求库 ASIHTTPRequest pokeb 网络请求库 Alamofire ...
- 七夕节 看到很多停止更新的blog 莫名有点淡淡的忧桑
又是一年七夕.又是一年单身.看到很多停止更新的blog, 仿佛看到了一茬一茬的程序猿 进入it 圈 又离开it圈,就有莫名的忧桑
- 我的CSDN博客停止更新通告
我的CSDN博客停止更新通告 自从2001年在CSDN发表第一篇博客開始,至今天(2014年6月11日)为止,算起来我己经在CSDN博客上"呆"了13年.共发表251篇原创文章,有 ...
随机推荐
- dubbo序列化问题(三)子类覆盖父类字段hession反序列化获取不到
转
在进行dubbo开发中遇到一个问题,当是用hession2进行序列化时,子类和父类有相同的字段时,hession2反序列化获取不到该字段数据,如下: import java.io.Serializab ...
- debian10环境安装rtpengine
操作系统 :debian 10.13_x64 rtpengine版本:10.5 最新的debian12环境可通过apt直接安装rtpengine,但工作中有时候还会涉及到debian10这样的老系统, ...
- 【CMake系列】09-cmake install 一般文件 文件夹 代码文件
上一节,我们学习了项目构建后.目标的安装,本节学习的内容是 对于一般文件,文件夹以及源代码的安装 本节的文件依然使用 file(WRITE xxx.xx) 来创建,不依赖额外的文件 本专栏的实践代码全 ...
- JVM深入学习-ClassLoader篇(一)
初识JVM --- ClassLoader深入理解 ClassLoader.SPI机制 Class对象的理解 java在诞生之初,就有一次编译到处运行的名言,今天我们来探究一下,从java代码到cla ...
- CentOs7.3 配置基本信息查看
1.基本信息查看(命令行) [root@localhost home]# CPU个数: [root@localhost home]# grep 'physical id' /proc/cpuinfo ...
- Density-invariant Features for Distant Point Cloud Registration论文阅读
Density-invariant Features for Distant Point Cloud Registration 2023 ICCV *Quan Liu, Hongzi Zhu, Yun ...
- 全网最适合入门的面向对象编程教程:37 Python常用复合数据类型-列表和列表推导式
全网最适合入门的面向对象编程教程:37 Python 常用复合数据类型-列表和列表推导式 摘要: 在 Python 中,列表是一个非常灵活且常用的复合数据类型.它允许存储多个项,这些项可以是任意的数据 ...
- Honor X20 忽然不能与Android Studio 连接
背景:前一天还正常使用,可以连接Android Studio,第二天就连不上了 已知:数据线没问题,驱动没问题,设备开了开发者模式,连接上电脑时会提示已连接USB调试, 测试过程:(点击撤销USB调试 ...
- C#自定义控件—文本显示、文本设值
C#用户控件之文本显示.设定组件 如何绘制一个便捷的文本显示组件.文本设值组件(TextShow,TextSet)? 绘制此控件的目的就是方便一键搞定标签显示(可自定义方法显示文本颜色等),方便自定义 ...
- spark 新建一个column并用另一column的最大值赋值
finalDF.withColumn("NEW_COLUMN", max("start_date").over()).show() Ref: https:/ ...