我正在尝试使用属性的名称访问工作表上的自定义属性,但似乎不支持(至少在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;
我知道解决方法只是迭代所有属性并找到正确属性的方法,但我真的想避免任何额外的开销。
答案 0 :(得分:3)
有人可以确认这不适用于C#吗?
尝试使用Office 2013预览版和Interop API的第15版,我可以确认这在C#中不起作用(抛出COMException
并显示“类型不匹配”消息。
我已经检查了documentation,它指出使用密钥名称作为Item
索引器的索引应该是完全合法的 - 来自CustomProperties.Item
属性的文档,它声明以下索引器可用:
CustomProperty this[
Object Index
] { get; }
...在下文中,文档说明:
<强>参数强>
索引
输入:
System.Object
必需对象。 名称或对象的索引号。
...因为文档声明该名称是有效密钥,我们遇到的行为可能是一个错误。