#c# #interop #word
Вопрос:
Код, который я использую:
string fullPath = null;
DateTime creationDate = new DateTime();
string creatorName = null;
foreach (var arg in args) {
if (arg.Contains("--path")) {
fullPath = arg.Substring(7);
}
if (arg.Contains("--creationDate")) {
creationDate = DateTime.Parse(arg.Substring(15));
}
if (arg.Contains("--creatorName")) {
creatorName = arg.Substring(14);
}
}
var wordInterop = new Microsoft.Office.Interop.Word.Application();
var wordWorkBook = wordInterop.Documents.Open(fullPath);
wordWorkBook.BuiltInDocumentProperties["Creation Date"].Value = creationDate;
wordWorkBook.BuiltInDocumentProperties["Author"].Value = creatorName;
wordWorkBook.Save();
wordInterop.Quit();
Marshal.ReleaseComObject(wordWorkBook);
Marshal.ReleaseComObject(wordInterop);
File.SetCreationTime(fullPath, creationDate);
Всякий раз, когда я распечатываю дату создания, она остается прежней.
Установка свойства author работает.
Я попробовал подделать Excel с помощью этого метода, он работает.
Комментарии:
1. Вы пытались присвоить
creationDate.ToOADate()
свойству значение?2. Да, к сожалению, это тоже не работает.
3. Согласно документам , вы должны использовать перечисление WdBuildInProperty для доступа к встроенным свойствам, что-то вроде
BuiltInDocumentProperties[WdBuiltInProperty.wdPropertyTimeCreated].Value = creationDate.ToOADate()
4. Попробовал и это тоже, к сожалению, тоже не сработало. Но автор указан правильно, поэтому я не понимаю, почему не установлена дата создания…