Можно ли использовать OpenXML для запуска нового экземпляра Word?
Я могу создавать документы Word без проблем. Я сохраняю полученный файл *.docx во временную папку, а затем мне нужно запустить файл в Word.
Требуется не "открывать" файл в Word (это легко сделать с помощью Process.Start), а загружать в Word как новый несохраненный файл. Это связано с тем, что определенные интеграции правильности для Word должны вступать во владение, когда пользователь сохраняет файл, и не включаться, если файл готов сохранен, но в определенное место на диске.
Я добился этого с помощью вызовов Interop в приложении Word, добавив новый документ в рабочую область Word. Моя проблема связана с Interop, который имеет тенденцию ломаться на разных клиентских компьютерах, особенно когда происходит обновление Office (скажем, у клиента был 32-разрядный офис, но он обновлен до 64-разрядной версии).
Я немного новичок в OpenXML, но можно ли его использовать для автоматизации Word или Interop - мой единственный реальный вариант?
object oFilename = tmpFileName;
object oNewTemplate = false;
object oDocumentType = 0;
object oVisible = true;
Document document = _application.Documents.Add(ref oFilename, ref oNewTemplate, ref oDocumentType, ref oVisible);
1 ответ
Нет, технология Open XML не имеет способа взаимодействия с приложением Office (Word) - она предназначена только для создания / манипулирования файлами. Взаимодействие требуется для того, чтобы что-либо делать с приложением Word.
Есть способ обойти это - и это возможно только в Word, и ни в одном другом приложении Office его нет - это преобразовать содержимое Open XML в формат плоских файлов OPC. Это "объединяет" различные пакеты, составляющие zip-файл, в чистую текстовую строку, по сути, в один XML-файл.
Содержимое XML в формате плоского файла OPC затем можно записать в уже открытый (даже недавно созданный) документ Word, используя Range.InsertXML
метод через "взаимодействие". В некотором смысле это "перетекает" содержимое Open XML в открытый документ Word.
Проблема этого подхода заключается в том, что определенные свойства уровня документа не записываются в целевой документ, поэтому не все аспекты открытого документа могут быть изменены. Например: размер страницы, ориентация, верхние и нижние колонтитулы... Так что, если на такие вещи также необходимо повлиять, для таких настроек требуется взаимодействие.