【问题标题】:Updated Excel Cell value by Name Reference in C#在 C# 中按名称引用更新 Excel 单元格值
【发布时间】:2011-11-12 19:58:16
【问题描述】:

我在 excel 中有一个命名单元格,可以说它叫做“myCell” 在 C# 中,我希望能够访问此单元格并更新其值。 我试过了

Globals.ThisAddIn.Application.Names.Item(@"myCell").Value = "myValue";

但这会引发 COM 异常,并显示消息“HRESULT 中的异常:0x800A03EC”

【问题讨论】:

    标签: c# excel interop


    【解决方案1】:

    你的问题是:

    Globals.ThisAddIn.Application.Names.Item(@"myCell")
    

    不返回可以设置值的 Range,而是返回 Name 类型的对象。您可以使用 RefersToRange 属性获取表示您要查找的单元格的 Range,然后设置此对象的值。这一切都转化为这样的东西:

    Globals.ThisAddIn.Application.Names.Item(@"myCell").RefersToRange.Value = "myValue";
    

    【讨论】:

      【解决方案2】:

      只需使用Range 对象。一个命名的单元格是一个命名的Range,所以这应该可以工作:

      myWorkBook.myWorkSheet.Range["myCell"].Value = "myValue";
      

      P.D.我无法检查这一点,我不确定您是否可以将值直接分配给Rangeobject,或者您需要指定Range 内的单元格的偏移量(因为它可以包含许多单元格)。

      您也可以尝试:(我不记得命名范围是否直接与单元格一起使用)

      myWorkBook.myWorkSheet.Cells["myCell"].Value = "myValue";
      

      【讨论】:

      • 两者都给出消息 Non-invocable member 'Microsoft.Office.Interop.Excel._Application.Range' 不能像方法一样使用。
      • @Eddie:糟糕,将( 更改为[。编辑了我的帖子。
      • 仍然使用 [] 触发相同的消息
      【解决方案3】:

      用途:

      var cell = myWorksheet.Evaluate("defined_name");
      if (cell != null) { cell.Value = "hello"; }
      

      或者:

      myWorksheet.Cells.SetValue("defined_name", "hello");
      

      在最后一种情况下,尝试为不存在的名称设置值会给出“HRESULT 异常:0x800A03EC”

      如果检查 null 不起作用,请检查 this answer 以获取 int 值列表作为错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多