Как добавить MergeFiled в документ Word с помощью Office JavaScript API

Я работаю над одним решением для автоматизации документов, которое использует скорость для объединения переменных в текстовом документе. Ниже приведен пример того, как выглядит текущий шаблон документа Word.

«#set($sheetTitle='Test 1 sheet for templ»
«#set($viewName='Default')»
«#set($map={"c1":"Name"})»
«$!{map.put("c2","Address")}»
«$!{map.put("c3","City")}»

Мы используем MergeField для вставки кода скорости. Когда мы нажимаем Alt + F9 в Microsoft Word, отображается следующее представление кода:

{ MERGEFIELD  "#set($sheetTitle='Test 1 sheet for template 1')"  \* MERGEFORMAT }
{ MERGEFIELD  #set($viewName='Default')  \* MERGEFORMAT }
{ MERGEFIELD  #set($map={\"c1\":\"Name\"})  \* MERGEFORMAT }
{ MERGEFIELD  $!{map.put(\"c2\",\"Address\")}  \* MERGEFORMAT }
{ MERGEFIELD  $!{map.put(\"c3\",\"City\")}  \* MERGEFORMAT }

Я пытаюсь создать подключаемый модуль с помощью Office.js (Office Online), который поможет нам создать аналогичный шаблон скорости с возможностью MERGEFIELD.

Мы можем создать MergeField в проекте VSTO, используя Microsoft.Office.Interop.Word.MailMerge. Однако с помощью Office.js я не нашел возможности создать MergeField. Можем ли мы создать Mergefield с помощью Office.js?

Спасибо


person Akhil    schedule 04.07.2018    source источник
comment
В настоящее время API-интерфейсы Office JS для Word не поддерживают работу с кодами полей — в этой объектной модели ничего нет. В UserVoice есть запросы на эту возможность (officespdev.uservoice.com/forums/; officespdev.uservoice.com/forums/). В настоящее время единственным способом вставки кодов полей является WordOpenXML (метод insertOOXML объекта Range).   -  person Cindy Meister    schedule 04.07.2018
comment
Возможно, вы захотите увидеть мой ответ на другой похожий вопрос stackoverflow.com/a/51180120/3077495   -  person Cindy Meister    schedule 04.07.2018
comment
Мне также нужно вставить коды полей с помощью OfficeJS. Я могу вставить весь ooxml во весь документ, но вызов insertOoxml() для объекта Range, т.е.: searchResults.items[i].insertOoxml(TEMPLATE_TAG, 'Replace'); приводит к ошибке, которая, к сожалению, является ошибкой: неизвестно. Мне нужно заменить текстовую строку кодом поля. При попытке вручную отредактировать xml для всего документа я обнаружил, что текстовая строка может находиться в одном узле xml или в нескольких, в зависимости от того, как был создан/отредактирован документ. Кроме того, я обнаружил противоположную проблему с несколькими текстовыми строками в одном узле.   -  person David Nickerson    schedule 10.06.2019