# alibaba/easyexcel

**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/alibaba-easyexcel).**

33,703 stars · 7,589 forks · Java · Apache-2.0 · archived

## Links

- GitHub: https://github.com/alibaba/easyexcel
- Homepage: https://easyexcel.opensource.alibaba.com
- awesome-repositories: https://awesome-repositories.com/repository/alibaba-easyexcel.md

## Topics

`excel` `java` `jxl` `oom` `poi` `xls` `xlsx`

## Description

EasyExcel is a Java processing library designed for reading and writing XLS, XLSX, and CSV files. It functions as a memory-efficient spreadsheet parser, an object-relational mapper that binds spreadsheet columns to Java class fields, and a stream-based exporter for handling high-volume data.

The library distinguishes itself through a streaming model that processes large files row-by-row via listeners to prevent heap memory overflow. It also operates as a template engine, allowing the population of predefined spreadsheet files with dynamic data while preserving original layouts and styles.

Broad capabilities include automated report generation, data extraction from specific worksheets, and the application of cell styling, merging, and media embedding. The system also supports the direct streaming of spreadsheet data to and from HTTP request and response objects for web-based file transfers.

## Tags

### Data & Databases

- [Excel Processing Libraries](https://awesome-repositories.com/f/data-databases/excel-processing-libraries.md) — Provides a comprehensive Java library for memory-efficient reading and writing of XLS, XLSX, and CSV files.
- [Spreadsheet Generators](https://awesome-repositories.com/f/data-databases/spreadsheet-generators.md) — Creates spreadsheet files from data objects or raw values using simple grids or multi-level headers. ([source](https://cdn.jsdelivr.net/gh/alibaba/easyexcel@master/README.md))
- [Column Mappings](https://awesome-repositories.com/f/data-databases/column-mappings.md) — Binds spreadsheet columns to Java class fields using annotations or indices to automate data conversion.
- [Layout Templates](https://awesome-repositories.com/f/data-databases/custom-reporting-engines/template-based-reports/layout-templates.md) — Fills pre-existing files with data while preserving the original layout and formatting. ([source](https://easyexcel.opensource.alibaba.com/docs/current/quickstart/write))
- [Spreadsheet Data Exchange](https://awesome-repositories.com/f/data-databases/data-import-and-export/tabular-data-exports/spreadsheet-data-exchange.md) — Facilitates importing and exporting data using Excel and CSV formats while mapping to Java objects.
- [Event-Driven Row Parsers](https://awesome-repositories.com/f/data-databases/event-driven-row-parsers.md) — Processes large files row-by-row via listeners to prevent Java heap memory overflow.
- [Spreadsheet-to-Object Mappers](https://awesome-repositories.com/f/data-databases/object-relational-mappers/spreadsheet-to-object-mappers.md) — Binds spreadsheet columns to Java class fields through annotations for automated data mapping.
- [Cell Value Formatters](https://awesome-repositories.com/f/data-databases/column-expression-modifiers/programmatic-cell-transformation/cell-value-formatters.md) — Transforms date and numeric cells into strings using custom patterns and rounding modes. ([source](https://easyexcel.opensource.alibaba.com/docs/current/api/))
- [Data Export](https://awesome-repositories.com/f/data-databases/data-export.md) — Writes only specified data fields to the output spreadsheet based on provided configuration parameters. ([source](https://easyexcel.opensource.alibaba.com/docs/current/quickstart/write))
- [Worksheet Data Extraction](https://awesome-repositories.com/f/data-databases/data-processing-pipelines/data-transformation/data-parsing-extraction/worksheet-data-extraction.md) — Targets specific sheets by name or index and skips defined header rows during processing. ([source](https://easyexcel.opensource.alibaba.com/docs/current/api/))
- [Disk Caching Systems](https://awesome-repositories.com/f/data-databases/disk-caching-systems.md) — Utilizes disk-backed caching to offload cell data to temporary files, preventing memory overflow with massive datasets.
- [Dynamic Column Header Generators](https://awesome-repositories.com/f/data-databases/dynamic-column-header-generators.md) — Generates column headers in real-time based on the provided input data. ([source](https://easyexcel.opensource.alibaba.com/docs/current/quickstart/write))
- [Memory-Optimized Processing](https://awesome-repositories.com/f/data-databases/high-performance-data-infrastructures/memory-optimized-processing.md) — Reduces memory consumption during high-speed parsing through optimized data manipulation. ([source](https://easyexcel.opensource.alibaba.com/qa/read))
- [Stream-Based Exporters](https://awesome-repositories.com/f/data-databases/spreadsheet-writers/stream-based-exporters.md) — Streams data objects directly to files or HTTP responses to handle high-volume spreadsheet exports.

### Part of an Awesome List

- [Stream-Based Parsing](https://awesome-repositories.com/f/awesome-lists/data/html-and-xml-parsing/xml-parsing/stream-based-parsing.md) — Implements event-driven parsing of large spreadsheet files to minimize memory consumption. ([source](https://easyexcel.opensource.alibaba.com/qa/read))
- [Parsing Callback Handlers](https://awesome-repositories.com/f/awesome-lists/data/parsing-callback-handlers.md) — Triggers callback functions during the reading process to process data rows as they are parsed. ([source](https://easyexcel.opensource.alibaba.com/docs/current/api/))
- [Java and JVM Ecosystem](https://awesome-repositories.com/f/awesome-lists/devtools/java-and-jvm-ecosystem.md) — Memory-efficient library for processing Excel files.

### Business & Productivity Software

- [Large Scale Processing](https://awesome-repositories.com/f/business-productivity-software/excel-spreadsheet-management/large-scale-processing.md) — Handles massive spreadsheet files in Java without memory overflow errors via streaming data processing.
- [Template Engines](https://awesome-repositories.com/f/business-productivity-software/excel-spreadsheet-management/template-engines.md) — Populates predefined spreadsheet files with dynamic data while preserving original layouts and styles.
- [Spreadsheet Template Population](https://awesome-repositories.com/f/business-productivity-software/spreadsheet-template-population.md) — Populates predefined spreadsheet files with dynamic data while preserving original layouts and styles.

### Programming Languages & Runtimes

- [Object Mapping](https://awesome-repositories.com/f/programming-languages-runtimes/reflection-based-object-manipulation/object-mapping.md) — Binds spreadsheet columns to class properties using runtime reflection and annotations. ([source](https://easyexcel.opensource.alibaba.com/docs/current/api/))

### Software Engineering & Architecture

- [SAX Parsers](https://awesome-repositories.com/f/software-engineering-architecture/event-driven-architectures/sax-parsers.md) — Implements a SAX-based event parsing model to process spreadsheet files as a stream and minimize memory usage.
- [Spreadsheet Parsers](https://awesome-repositories.com/f/software-engineering-architecture/resource-abstraction-interfaces/spreadsheet-parsers.md) — Processes large spreadsheet files row-by-row via listeners to prevent Java heap memory overflow.

### Web Development

- [Spreadsheet Stream Processing](https://awesome-repositories.com/f/web-development/client-side-data-ingestion/large-file-processing/spreadsheet-stream-processing.md) — Processes oversized spreadsheet files via streams and caching to prevent Java heap memory overflow. ([source](https://easyexcel.opensource.alibaba.com/docs/current/api/))
- [Spreadsheet Data Injection](https://awesome-repositories.com/f/web-development/template-data-binding/template-data-injection/spreadsheet-data-injection.md) — Injects simple values, lists, and complex objects into predefined template files. ([source](https://easyexcel.opensource.alibaba.com/docs/current/quickstart/fill))
- [Spreadsheet Template Injection](https://awesome-repositories.com/f/web-development/template-data-binding/template-data-injection/spreadsheet-template-injection.md) — Populates predefined spreadsheet files by replacing placeholders with dynamic values while preserving original layouts.
- [Streaming File Responses](https://awesome-repositories.com/f/web-development/backend-development/request-response-handling/http-utilities/http-response-builders/streaming-file-responses.md) — Streams spreadsheet data directly to HTTP responses for efficient web-based file downloads.

### Education & Learning Resources

- [Data-Driven Report Generators](https://awesome-repositories.com/f/education-learning-resources/academic-research-syntheses/automated-report-generators/data-driven-report-generators.md) — Generates formatted spreadsheets from data objects using templates and dynamic headers for business reports.

### Graphics & Multimedia

- [Media and Hyperlink Embedders](https://awesome-repositories.com/f/graphics-multimedia/graphics-and-media/media-and-hyperlink-embedders.md) — Inserts images, hyperlinks, formulas, and comments directly into targeted spreadsheet cells. ([source](https://easyexcel.opensource.alibaba.com/docs/current/quickstart/write))

### User Interface & Experience

- [Cell Styling Systems](https://awesome-repositories.com/f/user-interface-experience/cell-styling-systems.md) — Applies custom colors, borders, and dimensions to cells using specific styles or automatic adjustments. ([source](https://easyexcel.opensource.alibaba.com/docs/current/quickstart/write))
- [Number Formatting](https://awesome-repositories.com/f/user-interface-experience/cell-styling-systems/number-formatting.md) — Converts dates and numbers into specific spreadsheet formats to ensure correct data representation. ([source](https://easyexcel.opensource.alibaba.com/docs/current/quickstart/write))
- [Cell Merging](https://awesome-repositories.com/f/user-interface-experience/grid-cell-configurations/cell-merging.md) — Combines multiple neighboring cells into a single larger cell for visual organization of reports. ([source](https://easyexcel.opensource.alibaba.com/docs/current/quickstart/write))
