EasyExcel Archived: Migrating to Apache Fesod for Better Performance & Long-Term Support

This article traces the evolution from Alibaba's archived EasyExcel to Apache Fesod (incubating), detailing migration steps, API compatibility, performance benchmarks showing Fesod's superior memory efficiency, and selection recommendations for Java Excel processing.

Code Ape Tech Column
Code Ape Tech Column
Code Ape Tech Column
EasyExcel Archived: Migrating to Apache Fesod for Better Performance & Long-Term Support

Background: EasyExcel's Decline

EasyExcel, open-sourced by Alibaba in 2018, gained over 33,000 GitHub stars by introducing SAX streaming parsing that could read a 75 MB Excel file (460,000 rows × 25 columns) with only 16 MB heap in 23 seconds. However, after core author Yuxiao left Alibaba in 2023, the project entered de facto maintenance mode: GitHub issues went unanswered for 30+ days, PR merges stalled, no formal release since v3.3.2 (October 2023), and compatibility with Spring Boot 3.x, Java 21, and Apache POI 5.x lagged. Alibaba officially announced end-of-updates in November 2024 and archived the repository in September 2025, making it read-only.

FastExcel: A Complete Rewrite

In December 2024, Yuxiao released FastExcel, a near-total rewrite rather than a simple fork. The project emphasizes three pillars:

Performance: Further optimized memory and I/O on top of SAX parsing. One developer reported processing time dropping from nearly 1 minute to ~18 seconds with peak memory under 800 MB.

New features: Version 1.0.0 added reading specific row ranges and Excel-to-PDF conversion, encapsulating functionality that previously required custom code.

API compatibility: Migration from EasyExcel requires only changing the Maven coordinates and package names. The Java API remains virtually identical; replacing com.alibaba.excel with cn.idev.excel is often sufficient.

FastExcel reached 1.8K GitHub stars within a month.

Comparison: EasyExcel vs FastExcel

API compatibility: EasyExcel (archived) vs FastExcel (fully consistent)

Migration cost: EasyExcel (—) vs FastExcel (change package only)

Performance: EasyExcel (baseline) vs FastExcel (better, more stable)

Features: EasyExcel (basic) vs FastExcel (read specific rows, Excel to PDF)

Maintenance: EasyExcel (archived) vs FastExcel (continuous updates)

License: EasyExcel (Apache 2.0) vs FastExcel (MIT, business-friendly)

Apache Fesod: Graduation to Apache Incubator

In late 2025 to early 2026, the author donated the entire codebase to the Apache Software Foundation, where it became a sub-project of Apache POI and was renamed Apache Fesod (Incubating) . The name stands for "Fast. Easy. Spreadsheet and Other Documents." The first incubating release, 2.0.0-incubating, arrived on January 21, 2026, followed by 2.0.1-incubating on February 11, 2026. This transition moves code ownership from an individual/company to the Apache Foundation — the same governance model as Apache POI, Maven, and Tomcat — ensuring long-term maintenance, stable release cadence, and elimination of the "author leaves, project stalls" risk.

Migration Guide: FastExcel to Apache Fesod

Step 1: Update Maven Dependency

<!-- Old FastExcel -->
<dependency>
<groupId>cn.idev.excel</groupId>
<artifactId>fastexcel</artifactId>
<version>1.3.0</version>
</dependency>

<!-- New Apache Fesod -->
<dependency>
<groupId>org.apache.fesod</groupId>
<artifactId>fesod</artifactId>
<version>2.0.1-incubating</version>
</dependency>

Step 2: Change Import Statements

// Old imports
import cn.idev.excel.EasyExcel;
import cn.idev.excel.annotation.ExcelProperty;

// New imports
import org.apache.fesod.Fesod;
import org.apache.fesod.annotation.ExcelProperty;

Step 3: Replace Entry Class

// Old FastExcel
EasyExcel.write(response.getOutputStream(), User.class)
    .sheet("User List")
    .doWrite(users);

// New Fesod (API nearly identical)
Fesod.write(response.getOutputStream(), User.class)
    .sheet("User List")
    .doWrite(users);

Complete Example: Million-Row Export

@RestController
@RequestMapping("/api/export")
public class ExportController {

    @GetMapping("/orders")
    public void exportOrders(HttpServletResponse response) throws IOException {
        // Set response headers
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        response.setCharacterEncoding("utf-8");
        String fileName = URLEncoder.encode("Order Report", "UTF-8").replaceAll("\\+", "%20");
        response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");

        // Streaming write — query and write in chunks, no OOM
        try (ExcelWriter writer = Fesod.write(response.getOutputStream(), OrderExportVO.class)
                .sheet("Order Data")
                .build()) {

            int page = 1;
            int pageSize = 10000;
            while (true) {
                List<OrderExportVO> pageData = orderService.pageOrders(page, pageSize);
                if (pageData.isEmpty()) {
                    break;
                }
                writer.write(pageData);
                page++;
            }
        }
    }
}

The article highlights a logistics company that reduced report generation from 4 hours to 20 minutes and cut server resource usage by 60% after adopting FastExcel (now Fesod).

Performance Comparison (500,000 Rows Write)

Benchmark results for writing 500,000 rows:

dhatim/FastExcel: Write speed 13s, GC count 18, GC pause 285ms, peak memory 1.68 GB — fastest speed but poor memory efficiency.

Apache Fesod: Write speed 21s, GC count 7, GC pause 68ms — best overall; GC count only 40% of competitors.

EasyExcel/FastExcel: Comparable speed, comparable GC count, GC pause 42-55ms — performance on par.

Apache Fesod's speed is within 10% of other streaming frameworks, but its memory efficiency leads by a wide margin: GC count is only 40% of competitors. In high-concurrency scenarios, memory efficiency outweighs raw speed because a single GC pause can erase all throughput gains.

Pros and Cons

Pros

Seamless API migration: EasyExcel → FastExcel → Fesod with near-identical APIs; migration cost is minimal.

Streaming processing, no OOM on millions of rows: Inherits EasyExcel's SAX streaming heritage; heap stays in MB range.

Continuous iteration, growing feature set: Row-range reading, Excel-to-PDF, ongoing streaming logic optimizations.

Apache Foundation backing: Code ownership transferred to the foundation, guaranteeing long-term maintenance.

MIT license, business-friendly: Free for commercial use and derivative works.

Industry-leading memory efficiency: GC efficiency 2.5× higher than EasyExcel/FastExcel; GC count only 40% of other frameworks.

Cons

Still incubating: Apache Fesod remains in the Incubating phase; 2.x APIs may see minor adjustments.

Naming churn: Three names in one year — EasyExcel → FastExcel → Apache Fesod — forcing developers to migrate twice.

FastExcel is frozen: No updates after 1.3.0; staying on FastExcel means no new features or bug fixes.

Code changes required: Moving from FastExcel to Fesod needs coordinate swap, import changes, and entry-class replacement — small but non-zero effort.

Selection Recommendations

New project: Apache Fesod — avoids future migration.

Currently on EasyExcel: Migrate to Fesod — swap dependency + change imports.

Currently on FastExcel: Migrate to Fesod — swap coordinates + change imports + replace entry class.

Trivial Excel (few rows): Hutool one-liner — don't over-engineer.

Need Excel-to-PDF: Fesod — built-in capability.

Conclusion

EasyExcel is truly dead — archived by Alibaba in September 2025 with no further maintenance. FastExcel did not die; it "graduated" from a personal project to an Apache top-level open-source project, rebranded as Apache Fesod. This rare "three hops in one year" represents the best possible outcome for an open-source library: from individual maintenance to Apache Foundation long-term stewardship.

For developers, the path is clear:

New projects: start directly with Apache Fesod.

Existing projects: incrementally migrate from EasyExcel/FastExcel to Fesod.

Don't hesitate because of another code change. The migration buys Apache Foundation-grade maintenance guarantees, continuous feature development, and superior memory efficiency. Though still incubating, Fesod is already running in production at multiple enterprises and is currently the most compelling choice for large-scale Excel processing in Java.

Open-source references:

Apache Fesod GitHub: https://github.com/apache/fesod

Fesod official documentation: https://fesod.apache.org

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

performance benchmarkEasyExcelmigration guideApache incubatorFastExcelApache FesodJava Excelstreaming parsing
Code Ape Tech Column
Written by

Code Ape Tech Column

Former Ant Group P8 engineer, pure technologist, sharing full‑stack Java, job interview and career advice through a column. Site: java-family.cn

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.