Я написал простой код для открытия файла Word (.docx) и установки свойств для этого файла. Этот код делает именно саму работу. Но когда C # открывает Microsoft Word, я должен обновить все поля, чтобы увидеть реальные значения, которые обновляются из моего кода!
Я хочу знать, что я делаю в своем коде, когда Microsoft Word открыт, все свойства имеют реальные значения и больше не нужно обновлять свойства с помощью mysself?
это мой код:
Совет: свойства словаря содержат имя и значение свойства.
public void SetWordFile(string FilePath, Dictionary<string, object> properties)
{
Microsoft.Office.Interop.Word._Application oWord = new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word._Document oDoc;
object originalFormat = Missing.Value;
object routeDocument = Missing.Value;
object oMissing = Missing.Value;
object saveChanges = false;
object oDocBuiltInProps;
object oDocAuthorProp;
Type typeDocAuthorProp;
oWord.Visible = true;
object oFalse = false;
object filePath = FilePath;
oDoc = oWord.Documents.Open(ref filePath, ref oMissing, ref oFalse, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
oDocBuiltInProps = oDoc.CustomDocumentProperties;
Type typeDocBuiltInProps = oDocBuiltInProps.GetType();
foreach (string item in properties.Keys)
{
oDocAuthorProp = typeDocBuiltInProps.InvokeMember("Item",
BindingFlags.Default |
BindingFlags.GetProperty,
null, oDocBuiltInProps,
new object[] { item });
typeDocAuthorProp = oDocAuthorProp.GetType();
typeDocAuthorProp.InvokeMember("Item",
BindingFlags.Default |
BindingFlags.SetProperty,
null, oDocBuiltInProps,
new object[] { item, properties[item] });
Thread.Sleep(10);
}
}