使用名称访问工作表上的CustomProperties

时间:2013-02-05 17:14:31

标签: c# excel ms-office office-interop

我正在尝试使用属性的名称访问工作表上的自定义属性,但似乎不支持(至少在C#中没有,我看到其他人报告它在VB中工作,文档也说所以)。有人可以确认这不适用于C#吗?以下是示例代码:

activeWorkSheet.CustomProperties.Add("Test", 123);
// Accessing by index works, but by name it doesn't. 
// The documentation says access by name should be possible
var works = activeWorkSheet.CustomProperties.Item[1].Value;
var doenstWork = activeWorkSheet.CustomProperties.Item["Test"].Value;

我知道解决方法只是迭代所有属性并找到正确属性的方法,但我真的想避免任何额外的开销。

1 个答案:

答案 0 :(得分:3)

  

有人可以确认这不适用于C#吗?

尝试使用Office 2013预览版和Interop API的第15版,我可以确认这在C#中不起作用(抛出COMException并显示“类型不匹配”消息。

我已经检查了documentation,它指出使用密钥名称作为Item索引器的索引应该是完全合法的 - 来自CustomProperties.Item属性的文档,它声明以下索引器可用:

CustomProperty this[
    Object Index
] { get; }

...在下文中,文档说明:

  

<强>参数

     

索引

     

输入:System.Object

     

必需对象。 名称或对象的索引号。

...因为文档声明该名称是有效密钥,我们遇到的行为可能是一个错误。