Goodbye EasyExcel: Migrate to Apache Fesod for Better Memory Efficiency & Apache Support

This article explains why EasyExcel was archived, introduces FastExcel as a rewrite, details its donation to Apache as Fesod, provides migration steps with code examples, compares performance against alternatives, and recommends Apache Fesod for new and existing projects due to its streaming API, low GC overhead, and Apache Foundation backing.

Java Tech Enthusiast
Java Tech Enthusiast
Java Tech Enthusiast
Goodbye EasyExcel: Migrate to Apache Fesod for Better Memory Efficiency & Apache Support

Introduction

The article traces the lifecycle of EasyExcel, Alibaba's popular Java Excel library, from its 2018 open-source release to its archival in September 2025. EasyExcel gained over 33,000 GitHub stars by introducing SAX streaming parsing, enabling 75 MB (460k rows × 25 columns) files to be processed with only 16 MB heap in 23 seconds — a breakthrough over Apache POI's DOM model that often caused OOM.

EasyExcel's Decline

After core author Yuxiao left Alibaba in 2023, EasyExcel entered de facto maintenance halt: GitHub issues unanswered for 30+ days, PR merges stalled, no formal release since v3.3.2 (October 2023), and lagging compatibility with Spring Boot 3.x, Java 21, and Apache POI 5.x. Alibaba announced end-of-updates in November 2024 and archived the repository in September 2025, making it read-only.

FastExcel Arrival

In December 2024, Yuxiao released FastExcel, a near-total rewrite. It maintains full API compatibility with EasyExcel — migration requires only changing the Maven coordinates and the package name from com.alibaba.excel to cn.idev.excel. FastExcel 1.0.0 added practical features: reading specific row ranges and Excel-to-PDF conversion. Real-world feedback reports processing time dropping from nearly 1 minute to ~18 seconds with peak memory under 800 MB. Within a month, FastExcel garnered 1.8k GitHub stars.

FastExcel vs EasyExcel Comparison

API Compatibility: Identical — drop-in replacement.

Migration Cost: Change package name only.

Performance: Better and more stable.

Features: Adds read-specified-rows and Excel-to-PDF.

Maintenance: Active vs archived.

License: MIT (business-friendly) vs Apache 2.0.

FastExcel's Three Key Improvements

Performance tuning: Further optimized memory and I/O on top of SAX parsing.

Extended functionality: Built-in support for reading specific rows and Excel-to-PDF.

API compatibility: Seamless migration — only dependency and import changes needed.

Migration Code Examples

Maven Dependency Swap

<!-- EasyExcel (archived) -->
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>easyexcel</artifactId>
  <version>4.0.3</version>
</dependency>

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

Java Import Change

// Old
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.annotation.ExcelProperty;

// New
import cn.idev.excel.EasyExcel;
import cn.idev.excel.annotation.ExcelProperty;

FastExcel Graduates to Apache Fesod

In late 2025 to early 2026, the author donated FastExcel to the Apache Software Foundation, where it became a sub-project of Apache POI and was renamed Apache Fesod (Incubating) — short 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 moves code ownership from an individual/company to the Apache Foundation, ensuring long-term maintenance on par with Apache POI, Maven, and Tomcat.

FastExcel vs Apache Fesod

Group ID: cn.idev.excelorg.apache.fesod Artifact ID: fastexcelfesod Status: Transitional name (do not use for new projects) → Apache Incubating

Latest Version: 1.3.0 → 2.0.1-incubating

Maintenance Guarantee: Individual → Apache Foundation long-term

Three-Step Migration from FastExcel to 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 Package

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

// New
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 Streaming Export

@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("Order Report", "UTF-8").replaceAll("\\+", "%20");
        response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");

        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++;
            }
        }
    }
}

This streaming write avoids OOM even for millions of rows. A logistics company reported report generation time dropping from 4 hours to 20 minutes with 60% less server resource usage after adopting FastExcel (now Fesod).

Five Technical Solutions Compared

Apache POI: Active, any scale, DOM model, OOM risk at 100k+ rows.

POI SXSSF: Active, large files, streaming write, but weak at reading.

Hutool Excel: Active, under 10k rows, simple API, limited advanced features.

EasyExcel: Archived (2024), any scale, streaming, no new features/bug fixes.

FastExcel: Transitional, any scale, streaming, deprecated for new projects.

Apache Fesod: Incubating, any scale, streaming, still in incubation.

Performance Benchmarks (500k Row Write)

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

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

EasyExcel/FastExcel: Comparable speed, GC pause 42-55ms, similar memory profile.

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 across EasyExcel → FastExcel → Fesod.

Streaming processing keeps memory in MB range even for millions of rows.

Continuous iteration: new features like row-range reading and Excel-to-PDF.

Apache Foundation governance ensures long-term maintenance.

MIT license permits free commercial use and modification.

Industry-leading memory efficiency: GC frequency 2.5× lower than EasyExcel/FastExcel.

Cons

Still in Apache Incubating; 2.x API may see minor adjustments.

Naming churn: three names in one year (EasyExcel → FastExcel → Apache Fesod).

FastExcel 1.3.0 is end-of-life — no further updates.

Migration from FastExcel to Fesod requires coordinate, import, and entry-class changes.

Selection Recommendations

New projects: Start directly with Apache Fesod to avoid future migration.

Existing EasyExcel projects: Migrate to Fesod (swap dependency + imports).

Existing FastExcel projects: Migrate to Fesod (swap coordinates + imports + entry class).

Trivial Excel needs (few rows): Use Hutool's one-liner — no heavy framework needed.

Excel-to-PDF requirement: Fesod has built-in support.

Conclusion

EasyExcel is truly dead — archived by Alibaba in September 2025. FastExcel didn't die; it "graduated" to Apache Fesod, gaining foundation-level longevity. The "triple jump" in one year is a rare open-source success story: from personal maintenance to Apache-backed project. Developers should adopt Apache Fesod for new work and migrate existing codebases; the migration cost is low and buys Apache-grade maintenance, ongoing feature development, and superior memory efficiency.

Resources

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.

EasyExcelMemory EfficiencyMigration GuideApache IncubatorFastExcelStreaming APIApache FesodJava Excel
Java Tech Enthusiast
Written by

Java Tech Enthusiast

Sharing computer programming language knowledge, focusing on Java fundamentals, data structures, related tools, Spring Cloud, IntelliJ IDEA... Book giveaways, red‑packet rewards and other perks await!

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.