【问题标题】:In C#, how do I use the Excel Interop to speed up writing several cell values在 C# 中,如何使用 Excel 互操作加速写入多个单元格值
【发布时间】:2012-06-13 11:04:42
【问题描述】:

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

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

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

有没有一种方法可以更新这 30 个单元格数据,而无需一次遍历一个单元格?

谢谢, 汤姆

【问题讨论】:

  • 如果按照你说的解决了。请接受 Eugene Ryabtsev 的回答。

标签: c# excel range sparse-matrix


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 是的,我想试试这个,但是单元格的范围最终很大,而且有各种各样的图表和公式,我担心可能会干扰这个。不过我还是可以试试。谢谢。
    • @bunggo 在这种情况下,我会说 Eugene Ryabtsev 的建议看起来很有希望。
    【解决方案3】:

    您可以将值写入位于某处的连续单元格,例如在 X 列中,并在目标单元格中​​包含引用这些更新单元格的公式。因此,单元格 A1 将具有公式“=X1”,单元格 B23 将具有公式“=X2”等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      相关资源
      最近更新 更多