如何在BIRT excel报告中渲染大量行(50k的顺序)?

问题描述 投票:1回答:2

我在java项目中使用BIRT runtime 4.8.0来生成Excel报告。 excel报告有1k列,可以有10k到50k行(1个查询的结果,映射到1个表)。我正在使用spudsoft ExcelEmitter来呈现静态excel报告。

数据源:Impala jdbc连接,使用1个数据集和1个查询

问题是,在此报告中只需要渲染10k行就需要6到7GB的堆空间(java),以便将所有内容加载到内存中,然后将其写入文件。

有没有办法在渲染Excel工作表时减少内存占用(可预测的堆空间使用量最好低于3GB)(选项如分页查询结果,部分渲染文件等)?

excel birt birt-emitter
2个回答
0
投票

通过直接使用Apache POI Streaming APIs,我能够为大型数据集(50k行和1k列的顺序)生成excel。 Aspose APIs是另一个很好的工具。

使用POI流API,您可以使用50k行的顺序渲染Excel,1k列,大约1分钟或2GB的峰值RAM使用率。

因此,如果您扩展Spudsoft excel emitter以使用POI流API,那么它也可以使用BIRT进行处理。


0
投票

我用新版本的spudsoft发射器解决了这个问题。这会将apache poi从xssf更改为sxssf:

ExcelEmitter.ExtractMode实验功能!设置为true时,XLSX文件的发射器运行速度应该更快,但功能集有限:

  • 图像将被省略。
  • 不允许合并细胞。
  • 不支持结构页眉和页脚。请参见ExcelEmitter.StructuredHeader。

https://www.eclipse.org/forums/index.php/m/1804253/#msg_1804253

© www.soinside.com 2019 - 2024. All rights reserved.