# apache/fesod

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/apache-fesod).**

6,062 stars · 507 forks · Java · Apache-2.0

## Links

- GitHub: https://github.com/apache/fesod
- Homepage: https://fesod.apache.org
- awesome-repositories: https://awesome-repositories.com/repository/apache-fesod.md

## Topics

`csv` `easyexcel` `excel` `fast-excel` `fastexcel` `java` `office` `poi` `xls` `xlsx`

## Description

Apache Fesod is a lightweight Java library that wraps Apache POI to provide a streaming API for reading and writing large Excel files. Its core identity is a low-memory spreadsheet processor that prevents out-of-memory errors by handling data row by row, never loading an entire document into memory at once.

The library distinguishes itself through a listener-driven event model that fires row-level events to user code as each row is parsed, enabling incremental processing. It also includes an object mapping layer that maps spreadsheet rows directly to Java objects using configurable column mappings, and a low-memory write pipeline that writes spreadsheet data incrementally to disk without building the full document in memory. A temporary file cache stores partially processed data to avoid re-reading the same file region multiple times.

The library supports both reading and writing Excel files, with capabilities for streaming cell data, processing spreadsheets with hundreds of thousands of rows, and creating Excel documents from Java object collections with custom column mappings and sheet names. Its documentation covers installation and usage through standard Java library distribution channels.

## Tags

### Data & Databases

- [Spreadsheet Streaming Libraries](https://awesome-repositories.com/f/data-databases/spreadsheet-streaming-libraries.md) — A lightweight library that wraps Apache POI to stream spreadsheet data and prevent out-of-memory errors.
- [Event-Driven Row Parsers](https://awesome-repositories.com/f/data-databases/event-driven-row-parsers.md) — Fires row-level callbacks as each row is parsed, enabling incremental processing without loading the full file.
- [Excel Automation](https://awesome-repositories.com/f/data-databases/excel-automation.md) — Provides a streaming API for reading and writing Excel files with configurable column mappings.
- [Excel File Parsers](https://awesome-repositories.com/f/data-databases/excel-file-parsers.md) — Reads Excel files row by row without loading the entire document into memory, preventing out-of-memory errors. ([source](https://cdn.jsdelivr.net/gh/apache/fesod@main/README.md))
- [Streaming Processors](https://awesome-repositories.com/f/data-databases/excel-processing-libraries/streaming-processors.md) — Processes spreadsheets with hundreds of thousands of rows by streaming data instead of loading everything into memory. ([source](https://cdn.jsdelivr.net/gh/apache/fesod@main/README.md))
- [Spreadsheet Write Pipelines](https://awesome-repositories.com/f/data-databases/incremental-data-streaming/incremental-writes/spreadsheet-write-pipelines.md) — Writes spreadsheet data incrementally to disk without building the full document in memory.
- [Low-Memory Writers](https://awesome-repositories.com/f/data-databases/excel-automation/low-memory-writers.md) — Creates Excel documents from Java objects with configurable column mappings while keeping memory usage low.

### Business & Productivity Software

- [Large Scale Processing](https://awesome-repositories.com/f/business-productivity-software/excel-spreadsheet-management/large-scale-processing.md) — Streams rows from large Excel files one at a time to avoid loading the entire document into memory. ([source](https://fesod.apache.org/docs/quickstart/guide))
- [Spreadsheet Data Writing](https://awesome-repositories.com/f/business-productivity-software/spreadsheet-data-writing.md) — Writes Java object collections to Excel files with support for template sheets and custom data mapping. ([source](https://fesod.apache.org/docs/))

### Web Development

- [Spreadsheet Row Streaming](https://awesome-repositories.com/f/web-development/asynchronous-stream-processors/spreadsheet-row-streaming.md) — Processes Excel files with millions of rows using a listener-based streaming approach for Java applications.
- [Spreadsheet Stream Processing](https://awesome-repositories.com/f/web-development/client-side-data-ingestion/large-file-processing/spreadsheet-stream-processing.md) — Reads data from Excel files into Java objects using a listener-based streaming approach for large datasets. ([source](https://fesod.apache.org/docs/))

### Programming Languages & Runtimes

- [Object Mapping](https://awesome-repositories.com/f/programming-languages-runtimes/reflection-based-object-manipulation/object-mapping.md) — Maps spreadsheet rows directly to Java objects using configurable column mappings via reflection.
