首页 > 解决方案 > 使用“ClosedXML”NuGet 保存 50k 行的 Excel 文件需要很长时间

问题描述

我需要将数据保存到 Excel 文件 (.xlsx) 中。在从不同的开发人员那里获得了一些关于这个 NuGet 的建议后,我决定使用“ ClosedXML ”NuGet (v0.95.3) ( https://www.nuget.org/packages/ClosedXML/ ) 来实现它。

最近在导出50k 行时遇到问题:

我正在使用“SaveAs()”方法将数据保存到给定的流中,并且我已经使用了“ XLEventTracking.Disabled ”优化。

可能,我不是第一个处理 Excel 文件的人,所以:

  1. 有没有人熟悉“ ClosedXML ”NuGet 并在过去遇到过这样的问题?
  2. 您是否使用不同的 NuGet for Excel 文件?(即使花钱)。

提前致谢!

标签: c#.netexcelnugetclosedxml

解决方案


我已经使用ClosedXML了几年,我不得不承认该库 - 从版本开始0.95.1- 对于较大的 Excel 报告几乎无法使用。内存使用/足迹是一场灾难。一个非常大的报告可以轻松分配几 GB 的 RAM。

您看到的性能问题与GC(垃圾收集)有关。查看代码,您很快意识到修复此问题需要多次迭代改进。

我建议查看其他库。就个人而言,我更喜欢使用原生的libxlsxwriter库。您可以使用DllImport互操作轻松与其集成。对于大型报告,请考虑使用恒定内存模式。凭借恒定的内存,它ClosedXML在 CPU 和 RAM 方面都表现出色。


推荐阅读