Сохранение свойств документа Word 2007 в C # 2.0 - PullRequest
3 голосов
/ 06 октября 2009

Я пытаюсь изменить некоторые CustomDocumentProperties для документа .docx. Мне удалось прочитать текущее значение и изменить его, но при сохранении документа изменения в настраиваемых полях теряются.

У меня есть следующий метод в классе DocAccessor (который служит интерфейсом для моих файлов документов):

void SetInfo(string key, string val) {
    object custom_properties = current_doc.CustomDocumentProperties;
    Type custom_properties_type = custom_properties.GetType();
    custom_properties_type.InvokeMember("Item", BindingFlags.Default | BindingFlags.SetProperty, null, custom_properties, new object[] { key, val });
}

в другом месте я звоню:

doc_accessor.GetInfo("Number") //returns 5
doc_accessor.SetInfo("Number", "6");
doc_accessor.GetInfo("Number") //returns 6
doc_accessor.SaveAndClose();
doc_accessor.Open(); //it retains the path, so I don't need to respecify
doc_accessor.GetInfo("Number") //returns 5

Моя функция doc_accessor.SaveAndClose () работает правильно, так как я изменил путь, чтобы сохранить в другом месте, и сделал это ... но без записи измененных свойств CustomDocumentProperties. Это создает впечатление, что я пропускаю какой-то шаг коммита, но разве не должен обрабатывать current_doc.Save ()?

Ответы [ 2 ]

1 голос
/ 22 ноября 2011

2 минуты назад я решил ту же проблему.

При добавлении / изменении пользовательских свойств кажется, что документ не changed, поэтому WordApplication.ActiveDocument.Saved по-прежнему true.

Установите его на false и затем вызовите метод сохранения документа, он будет работать !!

1 голос
/ 07 октября 2009

http://support.microsoft.com/kb/195425

http://msdn.microsoft.com/en-us/library/y1xatbkd(VS.80).aspx

Не знаю, поможет ли это. но вот с чего бы я начал.

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.documentclass.saved(office.11).aspx

Извините за ссылки, которые мне пришлось удалить заголовок протокола, потому что стек не считает, что я должен иметь более одной ссылки в моих ответах, потому что я не реальный участник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...