【问题标题】:Need a faster Excel interop method需要更快的 Excel 互操作方法
【发布时间】:2012-05-19 04:55:58
【问题描述】:

众所周知,与 Excel 和 .Net 的互操作速度非常慢。我知道能够一次性将一组值复制到工作表对象,但根据我的秒表,甚至有一个类型的命令(在 VB.Net 中):

 WS.Range(--range string here--).Value = array

...耗时 0.3 秒!这加起来是因为我的例程向每个工作表写入了几十个数组,并且每个工作簿有几个工作表,而且我可能还会遍历几个工作簿。

如果有一种方法可以一次写入不连续的非矩形单元组,那么我可以使用一个写入命令来完成整个 WS。但我认为没有办法在保留“中间”单元格的原始值的同时做到这一点。这些工作簿是预先格式化的,所以我必须保留特定的单元格。

我能做些什么来加快这个速度?

【问题讨论】:

  • 您是否尝试过关闭计算,然后在最后重新打开?记得重新计算所有。另外,请尝试从 VBA 执行此操作 - 如果它仍然很慢,则不应归咎于 .Net。
  • 谢谢,这实际上有很大的不同。我知道这种做法,但不认为计算有那么大的影响(无论如何对于这些工作表)。只是假设瓶颈是 .Net-Com 互操作。不知道如何给出评论的答案,所以我想我会自己发布一个。
  • 你也可以让 Ben 发布一个答案,这样你就可以接受了:)

标签: .net com excel-interop


【解决方案1】:

Ben 上面的评论非常成功; excel的公式计算是瓶颈。我松了一口气,因为我知道 .Net-Excel 互操作以缓慢着称,但我并不认为它那么慢。

【讨论】:

    【解决方案2】:

    我不知道这是否可能,但您查看了一个执行相同操作的库:NPOI。它可以读取和写入 Excel 文档。 使用它使我的应用程序更快(将数据从 xls 获取到 C# 应用程序)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-18
      • 1970-01-01
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多