我在excel中有一个命名单元格,可以说它叫做“myCell” 在C#中,我希望能够访问此单元格并更新其值。 我试过了
Globals.ThisAddIn.Application.Names.Item(@"myCell").Value = "myValue";
但是这会抛出一个COM异常,并显示消息'来自HRESULT的异常:0x800A03EC'
答案 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值列表。