【发布时间】: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