使用 p:dataExporter 将大型数据集导出为 XLSX 时超时

问题描述 投票:0回答:2
jsf primefaces primefaces-dataexporter
2个回答
3
投票

不要使用将其全部存储在内存中的

type="xlsx"
!使用
type="xlsxstream"
一次写入一行,然后垃圾收集它。我写出8000行PrimeFaces Datatable没问题
xlsxstream
.


2
投票

要提高导出到 Excel 时的性能,您应该使用以下 JSF 代码:

 <p:dataExporter type="xlsx" target="myDataTable" options="#{mybBean.excelOpt}" fileName="fichero.xslx" />

在代表bean的Java类中,应该包含以下代码,其中指示不计算列的宽度。豆码

 public ExcelOptions getExcelOpt() {
var excelOpt = new ExcelOptions();
excelOpt.setAutoSizeColumn(false);
return excelOpt; 
}

导出失败或耗时较长的原因是导出器分析每列的所有行并计算将应用于该列的最大宽度。这个过程在Java的POI库中并不是最优的。

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