不要使用将其全部存储在内存中的
type="xlsx"
!使用 type="xlsxstream"
一次写入一行,然后垃圾收集它。我写出8000行PrimeFaces Datatable没问题xlsxstream
.
要提高导出到 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库中并不是最优的。