我编写了一些代码,根据How do I add custom properties to a Word doc with .NET 4?
中的信息将自定义字段添加到Word文档模板它可以工作,但如果该字段已经存在则抛出异常。因此,我想阅读现有的自定义字段以检查已有的字段。
我根据http://msdn.microsoft.com/en-us/library/dhxe2d75(v=vs.110).aspx
的信息编写了一个函数但它在foreach循环的第一次迭代时崩溃。
如果没有自定义属性,则不会抛出异常。
我做错了什么?
类型' System.InvalidCastException'的第一次机会异常发生在未知模块中。 附加信息:无法转换类型为' System .__ ComObject'的COM对象。接口类型' Microsoft.Office.Core.DocumentProperty'。此操作失败,因为QueryInterface调用COM组件上的接口与IID& {2DF8D04E-5BFA-101B-BDE5-00AA0044DE52}'由于以下错误而失败:不支持此类接口(来自HRESULT的异常:0x80004002(E_NOINTERFACE))。
private bool PropertyExists(Word.Document Document, string PropertyName)
{
bool _bRet = false;
foreach (Microsoft.Office.Core.DocumentProperty _property in Document.CustomDocumentProperties)
{
if (_property.Name == PropertyName)
{
_bRet = true;
}
}
return _bRet;
}