【问题标题】:Visual C# Setting multiple cells at once with Excel InteropVisual C# 使用 Excel 互操作一次设置多个单元格
【发布时间】:2016-07-23 14:16:15
【问题描述】:

我编写了一个 c# 应用程序,这是我的第一个应用程序之一(我在这里是菜鸟)!该应用程序与 Excel 互操作一起使用并设置了许多需要很长时间的单元格。之后我听说可以在一次调用中设置一系列单元格。这就是我正在尝试做的事情,尽管关于这个主题有几个线程,但没有一个对我有用,或者我没有得到它。

当你谷歌时,大多数人都会建议这种方法:

Excel.Range rng = (Excel.Range)xlWorkSheet.get_Range(xlWorkSheet.Cells[1, 1], xlWorkSheet.Cells[3, 3]);
rng.Value = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

或者至少是get_Range。但我的问题是,我无法在工作表、工作簿或初始化的 Excel 应用程序上执行 get_Range。方法不存在,感觉网上找的都过时了!!!

我真的希望有人能帮我解决这个问题 :) 我想设置一行,或者如果不是太复杂的话,一次设置一整张纸。

【问题讨论】:

    标签: c# excel visual-studio


    【解决方案1】:

    至少从 Excel 对象库的 15.0 版开始,get_Range() 方法已被删除并替换为 Range 属性。此属性可用于执行与以前由 get_Range() 提供的相同功能。

    另请注意,将值设置为一维数组将导致如下输出,这可能不是您想要的:

    以下代码修复了这两个问题:

    var rng = (Excel.Range)xlWorkSheet.Range[xlWorkSheet.Cells[1, 1], xlWorkSheet.Cells[3, 3]];
    rng.Value = new int[,] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
    

    这导致输出如下:

    【讨论】:

    • 非常感谢,这将使我的应用程序快 100 倍:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    • 2018-11-18
    相关资源
    最近更新 更多