This document provides a high-level introduction to Apache Fesod (Incubating), its purpose, architecture, and key concepts. For detailed installation instructions, see Getting Started. For in-depth architectural details, see Architecture. For API usage patterns, see API Reference.
Apache Fesod (Incubating) is a high-performance, memory-efficient Java library for reading and writing spreadsheet files (XLSX, XLS, CSV). The library is designed to handle large-scale spreadsheet data processing while minimizing memory consumption, preventing out-of-memory (OOM) errors that commonly occur with traditional spreadsheet processing libraries.
The project provides a unified API through the FesodSheet entry point, abstracting the complexity of Apache POI and implementing sophisticated memory management strategies to process files containing hundreds of thousands or millions of rows with minimal memory overhead.
Sources: README.md40-50 website/docs/introduce.md10-21 .asf.yaml21
Apache Fesod is currently an incubating project under the Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC. The project follows Apache governance principles including open development on public mailing lists (dev@fesod.apache.org), contributor licensing agreements (iCLA), and meritocratic community structure.
Incubation status indicates the project is working toward establishing stable infrastructure, communications, and decision-making processes consistent with other successful ASF projects. The project maintains full Apache License 2.0 compliance and integrates with ASF infrastructure including mailing lists, GitHub integration via Boxer, and Apache RAT license validation.
Sources: DISCLAIMER1-10 NOTICE1-5 .asf.yaml45-49 README.md74-75
The name fesod (pronounced /ˈfɛsɒd/) is an acronym for "fast easy spreadsheet and other documents", expressing the project's origin, background, and vision: to provide developers with fast, simple tools for processing spreadsheet files without worrying about memory constraints when handling large files.
Sources: README.md49-50 website/docs/introduce.md19-20
Diagram: Apache Fesod Core Component Relationships
The system is organized into distinct layers:
| Layer | Key Components | Purpose |
|---|---|---|
| User Application | Custom data models, ReadListener implementations | User-defined data structures and processing logic |
| API Layer | FesodSheet, ExcelReader, ExcelWriter, builder classes | Primary API surface and builder pattern implementation |
| Configuration | ReadWorkbook, WriteWorkbook, ReadSheet, WriteSheet, WriteTable | Parameter objects for read/write operations |
| Processing | AnalysisContext, ReadListener, WriteHandler, converters | Event-driven processing and data transformation |
| Memory Management | ReadCacheSelector, MapCache, FileCache | Memory optimization strategies for large files |
| POI Abstraction | Apache POI wrappers | Low-level Excel format handling |
Sources: README.md100-166 website/docs/introduce.md34-96
Apache Fesod supports three primary spreadsheet formats through Apache POI integration:
Diagram: File Format Support Architecture
Each format has specific characteristics:
For detailed format-specific configuration, see File Format Support.
Sources: README.md69-71 website/docs/sheet/help/large-data.md14-20 .asf.yaml23-30
Apache Fesod implements a sophisticated memory management system to prevent OOM errors when processing large files:
Diagram: Memory Management Strategy Decision Tree
The default strategy (SimpleReadCacheSelector) automatically determines whether to use in-memory or file-based caching:
MapCache (in-memory), consuming approximately 15-50MBThe system achieves approximately 30-50MB permanent memory usage regardless of input file size, with temporary objects quickly garbage collected. This enables processing files with millions of rows on standard heap configurations.
For memory configuration details and tuning, see Memory Management and Large Data.
Sources: website/docs/sheet/help/large-data.md8-66
Diagram: Apache Fesod System Architecture Overview
The system consists of five primary modules organized under a parent POM:
| Module | Artifact ID | Purpose |
|---|---|---|
| BOM | fesod-bom | Bill of materials for dependency management |
| Common | fesod-common | Shared utility classes (StringUtils, MapUtils, etc.) |
| Sheet | fesod-sheet | Core spreadsheet processing implementation |
| Examples | fesod-examples | Sample code and Spring Boot integration examples |
| Distribution | fesod-distribution | Packaging and assembly for Maven Central |
For detailed module structure, see Project Structure. For build system details, see Build System.
Sources: README.md1-200 [pom.xml structure implied from dependencies]
The FesodSheet class serves as the primary entry point for all read and write operations, providing static factory methods following the builder pattern:
Diagram: FesodSheet API Entry Points
Read Pattern Example:
Write Pattern Example:
Multi-sheet Write Pattern:
For comprehensive API documentation, see Reading API and Writing API.
Sources: README.md104-166 website/docs/introduce.md36-96 website/docs/sheet/write/sheet.md20-92
Apache Fesod is distributed to Maven Central under the Apache organization group ID:
Gradle:
Java Compatibility:
| Fesod Version | JDK Support Range | Notes |
|---|---|---|
| 1.3.x | JDK 8 - JDK 25 | Current release line |
| 1.2.x | JDK 8 - JDK 21 | Prior stable release |
| 1.1.x | JDK 8 - JDK 21 | Legacy version |
| 1.0.x | JDK 8 - JDK 21 | Initial release |
The project requires Java 1.8 minimum but is tested across JDK 8, 11, 17, 21, and 25 in the CI pipeline to ensure compatibility. For installation details, see Getting Started.
Note: The project currently uses Apache POI as its underlying engine. If your project already includes POI dependencies, you may need to exclude POI artifacts to avoid version conflicts.
Sources: README.md63-98 website/docs/quickstart/guide.md10-52 .asf.yaml32
Apache Fesod provides backward compatibility with the legacy cn.idev.excel:fastexcel artifact through deprecated alias classes. The migration path enables gradual adoption:
Diagram: FastExcel to Fesod Migration Path
Migration Phases:
cn.idev.excel:fastexcel to org.apache.fesod:fesod, continue using FastExcel and FastExcelFactory classes (deprecated but functional)FastExcel / FastExcelFactory references with FesodSheet APIFor detailed migration instructions and API mappings, see Migration from FastExcel.
Sources: README.md74-75
Apache Fesod operates under Apache Software Foundation governance:
dev@fesod.apache.org - Public development discussionscommits@fesod.apache.org - Commit notificationsprivate@fesod.apache.org - PPMC private discussionsFor contribution guidelines, see Contributing. For committer process and governance details, see Community Governance.
Sources: README.md169-191 .asf.yaml45-53 DISCLAIMER1-10
cn.idev.excel:fastexcel artifactWebsite: https://fesod.apache.org
GitHub: https
Mailing List: Subscribe to dev@fesod.apache.org by emailing dev-subscribe@fesod.apache.org
Sources: README.md36-37 .asf.yaml22
Refresh this wiki
This wiki was recently refreshed. Please wait 2 days to refresh again.