Re: Ошибка приведения типа :???:
От: ku12345  
Дата: 31.10.05 13:26
Оценка:
Здравствуйте, UnLucky, Вы писали:

UL>Сразу укажу пространства имен, с которыми работаю (чтобы не было путаницы)

UL>
UL>using Word = Microsoft.Office.Interop.Word;
UL>using Office = Microsoft.Office.Core;
UL>

UL>Задача:
UL>получить список свойств документа и работать с ними.
UL>Попытка решения
UL>
UL>Office.DocumentProperties customProperties =
UL>                (Office.DocumentProperties) wordDoc.CustomDocumentProperties;
UL>

UL>Вот тут и выпадает CastException.
UL>Хотя в примерах MSDN сказано, что Word._Document.CustomDocumentProperties возвращает именно свойства документа.
UL>Может кто сталкивался с такой проблемой. Плиз, подскажите решение....
UL>Если что не понятно. обращайтесь.
UL>Только помогите...


private void SetDocProperty(Document doc,string PropertyName,string PropertyValue)
{
object oDocCustomProps=doc.CustomDocumentProperties;
Type typeDocCustomProps = oDocCustomProps.GetType();
try
{
object oDocCustomProp = typeDocCustomProps.InvokeMember("Item",
BindingFlags.Default |
BindingFlags.GetProperty,
//BindingFlags.SetProperty,
null,oDocCustomProps,
new object[] {PropertyName} );
Type typeDocCustomProp = oDocCustomProp.GetType();
typeDocCustomProp.InvokeMember("Value",
BindingFlags.Default |
BindingFlags.SetProperty,
null,oDocCustomProp,
new object[] {PropertyValue});
}
catch(Exception)
{
object[] oArgs = {PropertyName,false,
MsoDocProperties.msoPropertyTypeString,
PropertyValue};

typeDocCustomProps.InvokeMember("Add",BindingFlags.Default |
BindingFlags.InvokeMethod, null,
oDocCustomProps, oArgs );
}
}

private string GetDocProperty(Document doc,string PropertyName)
{
try
{
object oDocCustomProps=doc.CustomDocumentProperties;
Type typeDocCustomProps = oDocCustomProps.GetType();
object oDocCustomProp = typeDocCustomProps.InvokeMember("Item",
BindingFlags.Default |
BindingFlags.GetProperty,
null,oDocCustomProps,
new object[] {PropertyName} );
Type typeDocCustomProp = oDocCustomProp.GetType();
return typeDocCustomProp.InvokeMember("Value",
BindingFlags.Default |
BindingFlags.GetProperty,
null,oDocCustomProp,
new object[] {}).ToString();
}
catch(Exception)
{
return null;
}
}
Все это работает только в рантайме, попытки Save,Close( ref True... не приводят к сохранению изменений в doc-файл. Если кто сумеет закрепить (Apply) изменения, блесните освдомленностью
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.