Apache POI 花费了极长的时间写入工作簿

Jer*_*rry 4 java apache-poi

我正在使用 Apache POI 创建记录并将其保存到Workbook中。我有近5000 条新记录需要写入并保存到工作簿中。但在将 fileOutputStream 写入工作簿时,执行基本上停止并减慢。

我的意思是,在执行这一行时:

workbook.write(fileOutputStream);
Run Code Online (Sandbox Code Playgroud)

它几乎停止处理 5000 多条记录。我验证了在工作簿中写入需要花费近1 小时(!)。

我怎样才能提高性能并克服这个缺点?请建议...

**注意:其余代码是正常的Apache POI相关代码,它们执行得很好,没有问题,因此我没有提及所有代码。只有我被困在上面那行。

我在这里找到了一个讨论: FileOutputStream (Apachhe POI) take too long time to save

但是,这对我没有帮助。我需要保存整个文件。

Jer*_*rry 8

我理解的另一种解决方案,例如,在迭代 Row 并创建单元格时,不要在循环内部继续声明CellStylesheet.autoSizeColumn(colNumber),而是在循环外部仅声明这 2 一次,并仅在循环内部设置值和样式,即,cell.setCellStylecell.setCellValue

每次迭代时都声明上述 2 点,基本上会从根本上降低 POI 的性能。