使用VSTO在Excel中更新绑定的数据表很慢

我有一个Excel VSTO应用程序在内存中存储一​​个大的数据表,并将其中的一部分绑定到表。 用户可以更改他们select显示的字段,并定期进行批量更新。

大规模更新循环通过数据表更新几个字段。 这个更新过程似乎很慢(即更新40个奇数logging可能需要20秒)。

数据表是相当大的(10000行×450列),绑定到一个隐藏表和一个较小的视图(20个字段)绑定到一个可见的工作表。

数据表的所有更新都是在代码中完成的。

ProductRow = dt.Rows.Find(foundRows(i)("Primary Key")) If IsNothing(ProductRow) = False Then ProductRow("DECISION") = "Some Value" Updated += 1 End If 

我怀疑它只是大量的数据绑定到工作表,这减慢了这个过程,但是任何提高速度的build议都是非常受欢迎的。

使用VSTO来循环显示电子表格几乎在任何情况下都会变得很慢,因为有很多行/列。 即使是VBA也不会那么擅长。

我build议你实施一个穷人的状态模型。 换句话说,添加一个列(如果需要,隐藏)来指示每一行的状态 – 特别是如果它已被更改或没有。 当有任何更改时,请确保行状态的列已更新,以显示该行已被更改。 如果您还没有办法完成此任务,则可以通过工作表更改事件来完成此操作。

然后,当您循环显示电子表格时,只关注其状态已更改的值。 我的猜测是你正在检查和更新每一行,即使那些不需要更新。

作为最后的想法,这是否必须在Excel中完成? 在一个标准的.NET网格中的数据绑定几乎可以处理这个问题。