在C#中按名称引用更新了Excel单元格值

时间:2011-09-08 09:18:34

标签: c# excel interop

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

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

但是这会抛出一个COM异常,并显示消息'来自HRESULT的异常:0x800A03EC'

3 个答案:

答案 0 :(得分:2)

你的问题是:

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

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

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

答案 1 :(得分:1)

只需使用Range对象即可。命名单元格是一个名为Range的名称,因此应该可以使用:

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

Pd积。我无法检查这个并且我不确定您是否可以将值直接分配给Range对象,或者您需要在Range内指定单元格的偏移量(因为它可以包含许多细胞)。

你也可以尝试:(我不记得命名范围是否与细胞直接相关)

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

答案 2 :(得分:0)

使用:

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

或者:

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

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

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