在 C# 中,如何使用 Excel 互操作加快写入多个单元格值的速度

本文关键字:单元格 速度 何使用 互操作 Excel | 更新日期: 2023-09-27 18:34:22

我有一个硬件,我得到了30个数据点。 在工作表可见之前,这些点中的每一个都记录在电子表格中的几个不同位置,然后另一个程序接管 excel 电子表格。 在其他程序接管之前,需要将所有这些值写入电子表格。 如果我单独写入每个单元格,则写入大约需要 50 毫秒,完成数据采集大约需要 1.25 秒。

如果我能一次将所有值写入电子表格,我觉得这将大大加快所有这些单元格的写入速度。 我看到的问题是范围非常适合更新连续的单元格,因为我的数据不是连续的。 从本质上讲,这将是我想写的一个例子:
A1 = 1
B23 = a
F8 = 2012/12/25
D53 = 4.1235
B2 = 5

我尝试创建"A1,B23,F8,D53,B2"的范围,然后使用值数组设置值。 我尝试了 3 个不同的数组:对象 [5]、对象 [1,5] 和对象 [5,1]。 这些都将范围内指定单元格的值设置为我在所有情况下创建的数组的第一个索引。

有没有办法在不一次迭代一个单元格的情况下更新这 30 个单元格数据?

谢谢汤姆

在 C# 中,如何使用 Excel 互操作加快写入多个单元格值的速度

如果您的体系结构允许,另一个想法是使用具有连续矩形范围的隐藏工作表,为其部件设置名称并在所有其他工作表上使用这些名称。

我会定义一个矩形范围对象,其中包含要修改其值的所有单元格。 从该范围的 value 属性中获取矩形object[,]数组。 将新值写入数组,然后使用修改后的数组设置范围的值。

您可以将值写入位于某个位置的连续单元格,例如在 X 列中,并在目标单元格中具有引用这些更新单元格的公式。因此,单元格 A1 将具有公式"=X1",单元格 B23 "=X2",依此类推。