通过C#中的名称引用更新Excel单元格值

我有一个Excel中的命名单元可以说它的所谓的“myCell”在C#中,我希望能够访问这个单元格,并更新它的价值。 我试过了

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

但是这会引发一个COMexception,消息'HRESULTexception:0x800A03EC'

你的问题是:

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

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

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

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

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

PD我没有办法检查这一点,我不知道如果你可以直接赋值给一个Range对象,或者你需要指定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的exception:0x800A03EC”

如果检查为null不起作用,请检查此答案是否为int值列表为错误。