支持基于流式数据的 Excel 写入(类似 MyBatis-Plus ResultHandler)
- 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
Assessment
This issue has not been assessed yet.