【发布时间】:2020-09-04 11:08:42
【问题描述】:
我需要将数据保存到 Excel 文件 (.xlsx) 中。 在从不同的开发人员那里得到了几个关于这个 NuGet 的建议后,我决定使用“ClosedXML”NuGet (v0.95.3) (https://www.nuget.org/packages/ClosedXML/) 来实现它。
最近导出50k行时遇到问题:
- 仅保存过程(在所有数据都已添加到文件之后)需要很长时间,大约 ~10 秒
- 更不用说这些行的样式:字体、边框、调整列宽等大约需要 ~12 秒。
- 这更不用说我花了大约 20 来检索数据并将其写入文件的事实,所以在这种情况下,所有过程花费我 ~45 秒总计(太多了时间!!)。
我正在使用“SaveAs()”方法将数据保存到给定的流中,并且我已经使用了“XLEventTracking.Disabled”优化。
可能我不是第一个处理 Excel 文件的人,所以:
- 有没有人熟悉“ClosedXML”NuGet 并且过去遇到过这样的问题?
- 您是否使用不同的 NuGet for Excel 文件? (即使要花钱)。
提前致谢!
【问题讨论】:
-
xlsx 文件只是压缩的 xml。您可以创建一个两行 Excel 表,解压缩它,查看 xml,然后简单地生成一个包含 50,000 行的文本文件并压缩它。
-
ClosedXML 保留所有单元格的内存模型,并仅在您保存时将其写入文件。这样做的好处是可以使用非常有用的 API 来操作您的电子表格,但缺点是内存占用。如果您只想将数据转储到文件中,我会查看其他写入文件的工具。 (我是 ClosedXML 维护者)。
标签: c# .net excel nuget closedxml