Написах код за добавяне на персонализирани полета към шаблон на документ на Word въз основа на информацията в Как да добавя персонализирани свойства към документ на Word с .NET 4?
Работи, но хвърля изключение, ако полето вече съществува. Затова бих искал да прочета съществуващите потребителски полета, за да проверя какво вече има там.
Написах функция въз основа на информацията на http://msdn.microsoft.com/en-us/library/dhxe2d75(v=vs.110).aspx
но се срива при първата итерация на цикъла foreach.
Ако няма персонализирани свойства, това не хвърля изключение.
какво правя грешно
В неизвестен модул възникна първо изключение от тип „System.InvalidCastException“. Допълнителна информация: Не може да се предаде COM обект от тип „System.__ComObject“ към тип интерфейс „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;
}
ReadDocumentProperty
, но тя хвърля изключение на редproperties = myWordDoc.CustomDocumentProperties;
Това наистина е същият проблем като преди. - person cm5053   schedule 10.09.2014