通过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值列表为错误。