apache / apache/fesod

支持基于流式数据的 Excel 写入(类似 MyBatis-Plus ResultHandler)

Open
#488 1 comment 2 reactions 0 assignees View on GitHub
suggest
Dominant language
Java
Stars
6.2k
Forks
532
Avg merge
1d 3h
Merged PRs (30d)
42

Description

### Search before asking

- [x] I searched in the [issues](https://github.com/fast-excel/fastexcel/issues) and found nothing similar.

### Motivation

描述你的需求 / Describe the feature request
目前 FastExcel 在写入数据时,需要一次性将数据集合加载到内存中,再统一写入 Excel。
在数据量较大(百万级别)时,容易造成内存占用过高甚至 OOM。

希望能够提供 基于流式数据源(如 ResultHandler / 游标 / Iterator)直接写入 的功能,
即:边获取数据边写入,不必一次性加载全部数据到内存。

使用场景 / Use case

后端查询大数据集(数据库 ResultSet、分页游标等)

与 MyBatis-Plus ResultHandler、JDBC Streaming 等技术结合

持续写入大文件,降低内存占用

目前的替代方案 / Current workaround
目前只能手动分页查询 + 多次写入 sheet,但分页之间的写入无法无缝衔接,也会增加复杂度和 IO 开销。

预期效果 / Expected behavior

支持传入 Iterator / Stream / ResultHandler 等数据源

在内部逐行消费数据并写入 Excel

保证低内存占用(恒定内存开销)

好处 / Benefits

能导出百万级甚至更大规模数据集

避免 OOM

与现有数据库流式查询无缝对接

提高导出效率

附加信息 / Additional context
参考类似实现:

Apache POI SXSSF (Streaming)

EasyExcel 的 doWrite + 分批数据写入

MyBatis ResultHandler 流式处理

### Solution

_No response_

### Alternatives

_No response_

### Anything else?

_No response_

### Are you willing to submit a PR?

- [ ] I'm willing to submit a PR!

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.