我在 java 项目中使用 BIRT 运行时 4.8.0 来生成 Excel 报告。 Excel 报告有 1k 列,可以有 10k 到 50k 行(1 个查询的结果,映射到 1 个表)。我正在使用 spudsoft ExcelEmitter 来呈现静态 Excel 报告。
数据源:Impala jdbc 连接,使用 1 个数据集和 1 个查询
问题是,仅在该报告中渲染 10k 行就需要 6 到 7GB 的堆空间 (java),以便将所有内容加载到内存中,然后将其写入文件。
在渲染 Excel 工作表(查询结果分页、分段渲染文件等选项)时,是否有任何方法可以减少内存占用(可预测的堆空间使用量最好低于 3GB)?
最佳答案
我用新版本的 spudsoft 发射器解决了这个问题。 这会将 apache poi 从 xssf 更改为 sxssf:
ExcelEmitter.ExtractMode 实验性功能!当设置为 true 时,发射器对于 XLSX 文件应该运行得更快,但功能集有限:
- 图像将被省略。
- 不允许合并单元格。
- 不支持结构页眉和页脚。请参阅 ExcelEmitter.StructuredHeader。
https://www.eclipse.org/forums/index.php/m/1804253/#msg_1804253
关于excel - 如何在 BIRT Excel 报告中呈现大量行(50k 的数量级)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52690189/