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篇原创文章,有 ...
随机推荐
- 升级JDK时涉及的工作任务
JDK版本升级,通常引入新的语言特性.新的API,废弃一些API,从而导致一些不兼容的现象. 因此在升级产品使用的JDK版本时,通常有如下考虑: 新产品包括新建设的项目以及刚启动不久的项目,使用高版本 ...
- 快速基于 ClickHouse + Grafana 搭建可观测性解决方案 - 分布式链路追踪篇(ClickHouse 官方博客)
引言 在 ClickHouse,我们认为可观测性仅仅是另一个实时分析问题.作为一款高性能的实时分析数据库,ClickHouse 被用于多种场景,包括时间序列数据的实时分析.其应用场景的多样性推动了大量 ...
- OpenPCDet为KITTI数据集生成数据信息出现错误TypeError: load() missing 1 required positional argument: ‘Loader‘的解决方案
OpenPCDet为KITTI数据集生成数据信息出现错误 TypeError: load() missing 1 required positional argument: 'Loader' 通过查阅 ...
- python配置pip镜像
Python配置pip的镜像 国内的网络通过pip下载软件包只有不到10k的下载速度.不仅下载的慢,还容易引发超时错误,导致下载失败.而将给pip配置国内的镜像源可以完美的解决这个问题.本文讲解了pi ...
- 【图文教程】Centos 7下安装Hadoop
环境说明: 系统:Centos7 在VM中安装的 hadoop版本:2.7.7 JDK:1.8 注意:Hadoop需要Java环境的.记得安装Java环境 PS:Centos JDK安装 mkdir ...
- Java并发之原子变量及CAS算法-上篇
Java并发之原子变量及CAS算法-上篇 概述 本文主要讲在Java并发编程的时候,如果保证变量的原子性,在JDK提供的类中式怎么保证变量原子性的呢?.对应Java中的包是:java.util.c ...
- 【工程应用十二】Bayer图像格式中Hamilton-Adams及Zhang Wu 基于LMMSS算法的Demosaic过程优化。
Demosaic,中文直接发翻译为去马赛克, 但是其本质上并不是去除马赛克,这让很多第一次接触这个名词或者概念的人总会想的更多.因此,一般传感器在采集信息时一个位置只采集RGB颜色中的一个通道,这样可 ...
- android java.lang.Exception: java.net.ProtocolException: Expected HTTP 101 response
Android stomp长连接连接异常: 报错:java.lang.Exception: java.net.ProtocolException: Expected HTTP 101 response ...
- Redis入门 - C#|.NET Core封装Nuget包
经过前面章节的学习,可以说大家已经算Redis开发入门了.已经可以去到项目上磨砺了. 但是今天我还想和大家分享一章:封装自己的Redis C#库,然后打包成Nuget包. 首先要说明的是:不是要自己开 ...
- 工具 – Cypress
介绍 Cypress 是一款 e2e 测试工具.每当我们写好一个组件或者一个页面之后,我们会想对整体做一个测试. 在不使用工具的情况下,我们会开启 browser,然后做一系列点击.滚动.填 form ...