前言
在云栈社区的技术讨论中,不少开发者最近都发现了一个变化:EasyExcel 不仅没新功能了,连 Bug 都没人修了。GitHub 仓库已经在 2025 年 9 月被阿里正式归档。
但故事没有结束。EasyExcel 的作者离开阿里后,重新写了一个项目 FastExcel,而最近 FastExcel 又改名了。这篇文章专门聊聊这件事,希望能帮到你。
一、EasyExcel 是怎么“凉”的?
EasyExcel 是阿里在 2018 年开源的 Java Excel 处理库,一度是 GitHub 上最火的 Java 项目之一,累计超过 33,000 颗 Star。
它最大的突破是把 Excel 解析方式换成了 SAX 流式解析——不一次性把整个 Excel 加载进内存,而是一行一行地读。官方测试数据显示,仅需 16MB 内存就可以读取 75M(46 万行 25 列)的 Excel 文件,耗时仅 23 秒。在那个 POI 动不动就 OOM 的年代,EasyExcel 的出现堪称救星。
但问题出在 2023 年。EasyExcel 的核心作者(玉箫)从阿里离职,之后 EasyExcel 进入事实上的停更状态:
- GitHub Issues 响应延迟超过 30 天
- PR 合并基本停滞
- 近半年无正式版本发布(最新 v3.3.2 发布于 2023 年 10 月)
- 对 Spring Boot 3.x、Java 21、Apache POI 5.x 的兼容性支持滞后
2024 年 11 月,阿里正式宣布 EasyExcel 将停止更新,逐步进入维护模式。2025 年 9 月,GitHub 仓库被正式归档,变成只读状态。
很多人以为故事到这里就结束了。一个 33k Star 的项目,就这样“凉”了。但就在大家一筹莫展之际,原作者站了出来。
二、FastExcel 来了
2024 年 12 月,EasyExcel 原作者玉箫公开了一个新项目——FastExcel。很多人以为它只是 EasyExcel 的简单 fork,结果一看代码才发现,这几乎是一场彻底重构。
2.1 FastExcel 和 EasyExcel 的关系
FastExcel 和 EasyExcel 的关系可以总结为四个字:无缝承接。
| 对比维度 |
EasyExcel(停更) |
FastExcel(活跃) |
| API 兼容性 |
— |
完全一致 |
| 迁移成本 |
— |
换包名就行 |
| 性能 |
基准 |
更好、更稳定 |
| 功能 |
基本功能 |
读取指定行数、Excel 转 PDF |
| 维护状态 |
❌ 已归档 |
✅ 持续更新 |
| 开源协议 |
Apache 2.0 |
MIT(商业友好) |
FastExcel 做了三件关键的事情:
第一,性能继续压榨。在原有 SAX 解析基础上,进一步优化了内存和 IO 处理。实测中,有开发者从 EasyExcel 切换到 FastExcel 后,处理时间从将近 1 分钟降到了 18 秒左右,内存峰值控制在 800MB 以内。
第二,支持更多复杂 Excel 特性。1.0.0 版本就新增了读取 Excel 指定行数和将 Excel 转换为 PDF 的功能。很多原本需要自己写大量代码的功能,被重新封装进了框架里。
第三,兼容 EasyExcel API。这是最关键的一点——从 EasyExcel 迁移到 FastExcel,只需简单地更换包名和 Maven 依赖即可完成升级。很多项目甚至可以一行代码不改,直接迁移。
从 EasyExcel 到 FastExcel,代码几乎不用改:
<!-- EasyExcel(已停更) -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>4.0.3</version>
</dependency>
<!-- FastExcel(活跃维护) -->
<dependency>
<groupId>cn.idev.excel</groupId>
<artifactId>fastexcel</artifactId>
<version>1.3.0</version>
<!-- 请使用最新版本 -->
</dependency>
Java 代码层面,把 com.alibaba.excel 改成 cn.idev.excel 就行。API 几乎一模一样,迁移成本极低。FastExcel 上线短短一个月,GitHub 星标就突破了 1.8K。
三、FastExcel 又“消失”了?
如果你最近去 GitHub 搜 FastExcel,可能会发现搜不到原来的项目了。别慌。不是项目死了,是它“毕业”了——进入了 Apache 软件基金会。
2025 年底到 2026 年初,FastExcel 的作者把项目整套捐给了 Apache 软件基金会,成为 Apache POI 的子项目,更名为 Apache Fesod (Incubating)。
“Fesod”的全称是“Fast. Easy. Spreadsheet and Other Documents”——Fast、Easy、Spreadsheet 和其他文档。
2026 年 1 月 21 日,Fesod 发布了第一个孵化版本 2.0.0-incubating。2026 年 2 月 11 日,2.0.1-incubating 正式发布。
这意味着什么?代码所有权从个人/公司转给了 Apache 基金会——跟 Apache POI、Maven、Tomcat 一个待遇。这意味着长期维护有了保障,版本节奏会跟 Apache 其他项目一样稳定,不会再出现“原作者离职就停更”的情况。
这不是“FastExcel 死了”,而是“FastExcel 拿到了 Apache 终身保障”。
四、FastExcel vs Fesod 现在该用哪个?
很多人可能会懵:“上个月刚改完 import,怎么又换名字了?”别紧张。这次不是停更,是升级。
| 对比维度 |
FastExcel |
Apache Fesod |
| groupId |
cn.idev.excel |
org.apache.fesod |
| artifactId |
fastexcel |
fesod |
| 状态 |
过渡命名,新项目别用 |
Apache 孵化中 |
| 最新版本 |
1.3.0 |
2.0.1-incubating |
| 维护保障 |
个人维护 |
Apache 基金会长期保障 |
判断很简单:
- 新项目 → 直接上 Apache Fesod,少一次后续迁移
- 现有 EasyExcel/FastExcel 项目 → 切 Fesod,三步走
五、代码实战
如果你现在在用 FastExcel,迁移到 Fesod 其实非常简单。核心就是换坐标、改 import、换入口类。
5.1 第一步:替换 Maven 依赖
<!-- 旧的 FastExcel -->
<dependency>
<groupId>cn.idev.excel</groupId>
<artifactId>fastexcel</artifactId>
<version>1.3.0</version>
</dependency>
<!-- 新的 Apache Fesod -->
<dependency>
<groupId>org.apache.fesod</groupId>
<artifactId>fesod</artifactId>
<version>2.0.1-incubating</version>
</dependency>
5.2 第二步:修改导入包
把 cn.idev.excel 改成 org.apache.fesod:
// 旧的导入
import cn.idev.excel.EasyExcel;
import cn.idev.excel.annotation.ExcelProperty;
// 新的导入
import org.apache.fesod.Fesod;
import org.apache.fesod.annotation.ExcelProperty;
5.3 第三步:换入口类
// 旧的 FastExcel 写法
EasyExcel.write(response.getOutputStream(), User.class)
.sheet("用户列表")
.doWrite(users);
// 新的 Fesod 写法(API 几乎一致)
Fesod.write(response.getOutputStream(), User.class)
.sheet("用户列表")
.doWrite(users);
5.4 完整示例:百万行数据导出
@RestController
@RequestMapping("/api/export")
public class ExportController {
@GetMapping("/orders")
public void exportOrders(HttpServletResponse response) throws IOException {
// 设置响应头
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
String fileName = URLEncoder.encode("订单报表", "UTF-8").replaceAll("\\+", "%20");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
// 流式写入——边查边写,不 OOM
try (ExcelWriter writer = Fesod.write(response.getOutputStream(), OrderExportVO.class)
.sheet("订单数据")
.build()) {
int page = 1;
int pageSize = 10000;
while (true) {
List<OrderExportVO> pageData = orderService.pageOrders(page, pageSize);
if (pageData.isEmpty()) {
break;
}
writer.write(pageData);
page++;
}
}
}
}
这就是 Fesod 的核心优势——流式写入,百万行数据也不会 OOM。有物流企业使用 FastExcel(现 Fesod)后,报表生成时间从 4 小时缩短至 20 分钟,服务器资源占用减少 60%。
六、5 种技术方案对比
| 方案 |
维护状态 |
适用规模 |
内存模型 |
致命短板 |
| Apache POI |
活跃 |
任意 |
DOM(重) |
十万行级写入容易 OOM |
| POI SXSSF |
活跃 |
大文件 |
流式 |
写还行,读不擅长 |
| Hutool Excel |
活跃 |
<1 万行 |
简单 |
高级特性受限 |
| EasyExcel |
❌ 2024 年停更 |
任意 |
流式 |
不再有新功能/bug 修复 |
| FastExcel |
⚠️ 过渡命名 |
任意 |
流式 |
已是过渡命名,新项目别用 |
| Apache Fesod |
✅ Apache 孵化 |
任意 |
流式 |
仍在 Incubating 阶段 |
性能数据对比(50 万行写入):
| 方案 |
写入速度 |
GC 次数 |
GC 暂停 |
峰值内存 |
综合评价 |
| dhatim/FastExcel |
13s |
18 次 |
285ms |
1.68GB |
速度最快,内存效率差 |
| Apache Fesod |
21s |
7 次 |
68ms |
- |
综合最优 |
| EasyExcel/FastExcel |
相当 |
相当 |
42-55ms |
- |
性能一致 |
Apache Fesod 速度与其他流式框架在同一量级(差异 <10%),但内存效率遥遥领先——GC 次数仅为其他框架的 40%。高并发场景下,内存效率比原始速度更重要——一个 GC 暂停可能抵消所有速度优势。
七、优缺点
优点
- API 无缝迁移:从 EasyExcel 到 FastExcel 再到 Fesod,API 几乎完全一致。迁移成本极低,换包名就能用。
- 流式处理,百万行不 OOM:继承 EasyExcel 的 SAX 流式解析基因,百万行数据边读边处理,内存占用始终控制在 MB 级。
- 持续迭代,功能不断增强:读取指定行数、Excel 转 PDF 等实用功能,底层流式处理逻辑持续优化。
- Apache 基金会保障:项目进入 Apache 孵化器后,代码所有权从个人/公司转给基金会,长期维护有保障。
- MIT 协议,商业友好:MIT 协议允许商业场景免费使用、二次开发。
- 内存效率行业领先:Fesod 的 GC 效率比 EasyExcel/FastExcel 高 2.5 倍,GC 次数仅为其他框架的 40%。
缺点
- 还在孵化阶段:Apache Fesod 目前还在 Incubating 阶段,2.x API 有微调。
- 命名变迁有点乱:一年三连跳——EasyExcel → FastExcel → Apache Fesod。很多人刚换了 FastExcel,又得换 Fesod。
- FastExcel 已停更:FastExcel 1.3.0 之后不会再更新了。还用 FastExcel 意味着不会有新功能和 bug 修复。
- 需要改代码:从 FastExcel 迁移到 Fesod 需要换坐标、改 import、换入口类。虽然工作量不大,但还是要改。
八、选型建议
| 场景 |
推荐 |
理由 |
| 新项目 |
✅ Apache Fesod |
少一次后续迁移 |
| 在用 EasyExcel |
✅ 迁移到 Fesod |
换依赖 + 改 import |
| 在用 FastExcel |
✅ 迁移到 Fesod |
换坐标 + 改 import + 换入口类 |
| 极简场景(几行 Excel) |
Hutool 一行调用 |
别上重武器 |
| 需要 Excel 转 PDF |
✅ Fesod |
内置该能力 |
九、写在最后
回到最初的问题:EasyExcel 凉了?FastExcel 又改名了?
EasyExcel 确实凉了。2025 年 9 月阿里正式归档了 GitHub 仓库,不再有任何维护。
FastExcel 没有凉,它只是“毕业”了——从个人项目升级成了 Apache 顶级开源项目,改名叫 Apache Fesod。从 EasyExcel 到 FastExcel 再到 Apache Fesod,这个 Excel 处理库完成了一次罕见的“一年三连跳”。
这其实是开源项目能拿到的最好结局——从个人维护变成了 Apache 基金会长期保障。对于开发者来说,现状其实很简单:
- 新项目直接上 Apache Fesod
- 老项目逐步迁移,从 EasyExcel/FastExcel 换到 Fesod
别因为“又要改代码”就犹豫。这次迁移换来的,是 Apache 基金会级的长期维护保障、持续的功能迭代,以及更优的内存效率。
Fesod 还处于孵化阶段,但已经有很多企业开始在真实场景中使用了。对于需要处理大规模 Excel 的企业来说,这是目前最值得选择的方案。
开源地址: