EasyExcel Archived? How FastExcel and Apache Fesod Provide a Modern Java Excel Solution
When Alibaba archived the popular EasyExcel library, developers faced uncertainty about future maintenance, memory usage, and JDK compatibility, prompting the emergence of FastExcel as a drop‑in replacement and the Apache‑incubated Fesod project, which together offer a high‑performance, low‑memory Java Excel processing ecosystem.
Why EasyExcel Was So Popular
Java developers historically relied on Apache POI for Excel handling, but POI loads entire files into memory using a DOM model, causing excessive heap consumption and OOM crashes for large spreadsheets. EasyExcel, open‑sourced by Alibaba in 2018, solves this by using a SAX‑style streaming parser that reads rows one by one, releasing memory after each row, and offers a concise POJO‑based API that requires only a few annotations.
Enterprise Open‑Source Dilemma
In early 2023 the EasyExcel repository was marked as Archived , meaning only critical bug fixes would be accepted. The slowdown stemmed from the core maintainer leaving the company, exposing a common issue in Chinese open‑source projects: over‑reliance on a single individual and insufficient distributed governance. Without a hand‑off process, the project stalled while enterprises that depended on it faced potential technical debt as JDK versions advanced.
Stop new feature development, only bug fixes; users are advised to evaluate and migrate to other products.
FastExcel Takes Over
FastExcel was created as a compatible successor to EasyExcel. It retains the same API signatures, making migration trivial, while adding performance optimizations and extending support from JDK 8 up to JDK 25. Key advantages include:
Full compatibility : API mirrors EasyExcel, minimizing migration effort.
Performance boost : Further reduces memory footprint and speeds up processing in many scenarios.
Version upgrade : Supports newer JDK releases and cleans up legacy issues.
Switching Maven coordinates is as simple as replacing the dependency:
<!-- Original EasyExcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.4</version>
</dependency>
<!-- Replace with FastExcel -->
<dependency>
<groupId>cn.idev.excel</groupId>
<artifactId>fastexcel</artifactId>
<version>1.2.0</version>
</dependency>At the code level the change is limited to the import statement and class name:
// Original EasyExcel usage
import com.alibaba.excel.EasyExcel;
EasyExcel.read(fileName, Data.class, listener).sheet().doRead();
// FastExcel equivalent (recommended)
import cn.idev.excel.FastExcel;
FastExcel.read(fileName, Data.class, listener).sheet().doRead();Moving Into the Apache Incubator
To address governance concerns, the FastExcel community donated the project to the Apache Software Foundation. After a naming conflict with an existing Python project, the incubating project was renamed Apache Fesod (Fast Easy Spreadsheet and Other Documents). The project will eventually rename its main class from FastExcel to FesodSheet and move the package from cn.idev.excel to org.apache.fesod. Apache POI maintainer Dave Fisher has expressed interest in collaborating, positioning Fesod as a high‑performance complement to POI for massive data export scenarios.
Three‑Generation Comparison
The evolution can be summarised as:
EasyExcel – GroupId: com.alibaba, ArtifactId: easyexcel, Entry class: EasyExcel, Status: Archived.
FastExcel – GroupId: cn.idev.excel, ArtifactId: fastexcel, Entry class: FastExcel, Status: Active.
Fesod – GroupId: org.apache.fesod, ArtifactId: fesod, Entry class: FesodSheet, Status: Incubating.
Migration Recommendations
For Spring Boot projects, a dedicated starter (currently based on FastExcel) simplifies integration. Add the following Maven dependency:
<dependency>
<groupId>com.pig4cloud.excel</groupId>
<artifactId>excel-spring-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>Import and export can then be handled with a single annotation:
// Import: automatically parse uploaded Excel
@PostMapping("/import")
public void importData(@RequestExcel List<UserVO> list) {
userService.saveBatch(list);
}
// Export: return value becomes an Excel download
@GetMapping("/export")
@ResponseExcel(name = "User List")
public List<UserVO> export() {
return userService.list();
}This approach eliminates manual response handling and stream management, offering a stable path forward while FastExcel and Fesod continue to evolve.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Java Architecture Diary
Committed to sharing original, high‑quality technical articles; no fluff or promotional content.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
