【发布时间】:2011-11-12 19:58:16
【问题描述】:
我在 excel 中有一个命名单元格,可以说它叫做“myCell” 在 C# 中,我希望能够访问此单元格并更新其值。 我试过了
Globals.ThisAddIn.Application.Names.Item(@"myCell").Value = "myValue";
但这会引发 COM 异常,并显示消息“HRESULT 中的异常:0x800A03EC”
【问题讨论】:
我在 excel 中有一个命名单元格,可以说它叫做“myCell” 在 C# 中,我希望能够访问此单元格并更新其值。 我试过了
Globals.ThisAddIn.Application.Names.Item(@"myCell").Value = "myValue";
但这会引发 COM 异常,并显示消息“HRESULT 中的异常:0x800A03EC”
【问题讨论】:
你的问题是:
Globals.ThisAddIn.Application.Names.Item(@"myCell")
不返回可以设置值的 Range,而是返回 Name 类型的对象。您可以使用 RefersToRange 属性获取表示您要查找的单元格的 Range,然后设置此对象的值。这一切都转化为这样的东西:
Globals.ThisAddIn.Application.Names.Item(@"myCell").RefersToRange.Value = "myValue";
【讨论】:
只需使用Range 对象。一个命名的单元格是一个命名的Range,所以这应该可以工作:
myWorkBook.myWorkSheet.Range["myCell"].Value = "myValue";
P.D.我无法检查这一点,我不确定您是否可以将值直接分配给Rangeobject,或者您需要指定Range 内的单元格的偏移量(因为它可以包含许多单元格)。
您也可以尝试:(我不记得命名范围是否直接与单元格一起使用)
myWorkBook.myWorkSheet.Cells["myCell"].Value = "myValue";
【讨论】:
( 更改为[。编辑了我的帖子。
用途:
var cell = myWorksheet.Evaluate("defined_name");
if (cell != null) { cell.Value = "hello"; }
或者:
myWorksheet.Cells.SetValue("defined_name", "hello");
在最后一种情况下,尝试为不存在的名称设置值会给出“HRESULT 异常:0x800A03EC”
如果检查 null 不起作用,请检查 this answer 以获取 int 值列表作为错误。
【讨论】: