微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用“ ClosedXML” NuGet保存5万行的Excel文件需要很长时间

如何解决使用“ ClosedXML” NuGet保存5万行的Excel文件需要很长时间

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

最近,我导出 5万行时遇到问题:

  • 仅保存过程(在所有数据都已添加文件中之后)就花费了很长时间,大约〜10秒
  • 这毫无疑问,这些行的样式:字体,边框,调整列宽等大约需要〜12秒
  • 这没有提到需要大约20来检索数据并将其写入文件的事实,因此在这种情况下,所有过程总共花费了我〜45秒(太多了时间!)。

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

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

  1. 你们中的任何人都对NuGet“ ClosedXML ” NuGet熟悉吗?
  2. 您是否使用其他NuGet for Excel文件? (即使要花钱)。

谢谢!

解决方法

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

您看到的性能问题与GC(垃圾回收)有关。通过查看代码,您会很快意识到解决此问题将需要多次迭代。

我建议您查看其他库。就个人而言,我更喜欢使用本机libxlsxwriter库。您可以使用DllImport互操作轻松地与之集成。对于大型报告,请考虑使用Constant Memory模式。凭借恒定的内存,它在CPU和RAM方面均胜过ClosedXML

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。