gpt4 book ai didi

c# - 使用 "ClosedXML"NuGet 保存 50k 行的 Excel 文件需要很长时间

转载 作者:行者123 更新时间:2023-12-04 19:48:34 34 4
gpt4 key购买 nike

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

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

  • 单独的保存过程(在所有数据都已添加到文件之后)需要很长时间,大约 ~10 秒
  • 更不用说这些行的样式:字体、边框、调整列宽等大约需要 ~12 秒
  • 这还没有提到我花了大约 20 秒来检索数据并将数据写入文件这一事实,所以在这种情况下,所有过程总共花费了 ~45 秒(太多了时间!!)。

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

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

  1. 你们中有人熟悉“ClosedXML”NuGet 并在过去遇到过此类问题吗?
  2. 您是否对 Excel 文件使用了不同的 NuGet? (即使要花钱)。

提前致谢!

最佳答案

我已经使用 ClosedXML 几年了,我不得不承认这个库 - 从 0.95.1 版本开始 - 对于较大的 Excel 报告几乎不可用.内存使用/占用空间是一场灾难。一份非常大的报告可以轻松分配几千兆字节的 RAM。

您看到的性能问题与GC(垃圾收集)有关。查看代码,您很快就会意识到解决这个问题需要多次迭代改进。

我建议查看其他库。就个人而言,我更喜欢使用原生的 libxlsxwriter图书馆。您可以使用 DllImport 轻松地与之集成。互操作。对于大型报告,请考虑 Constant Memory模式。对于常量内存,它在 CPU 和 RAM 方面都优于 ClosedXML

关于c# - 使用 "ClosedXML"NuGet 保存 50k 行的 Excel 文件需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63739994/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com