Как заменить содержимое в документе docx шаблона и Open XML SDK 2.0 (Aug 09)?
У меня есть документ "docx" с шаблоном, который содержит желаемый макет, и вы хотите вставить содержимое с помощью С#, но я не могу найти способ однозначного обращения к конкретным разделам документа, таким как абзацы или таблицы.
Каков наилучший способ уникальной идентификации элементов в документе?
Благодаря,
Мэтт Шарп.
Ответы
Ответ 1
Как создается ваш шаблон? Использует ли он базовую XML-схему, загруженную как часть *.docx? Или вы используете элементы управления контентом на ленте разработчика, и в этом случае каждый элемент управления уникально идентифицируется с помощью указанного имени тега? Оба этих подхода облегчили бы идентификацию определенных разделов вашего документа, поскольку вы могли бы контролировать, где будут таблицы или абзацы.
Кроме того, вы можете рассмотреть возможность использования Open XML SDK 2.0 (использует .NET 3.5). Он включает удобный инструмент "Отражатель документов", который позволяет открывать и проверять любой документ Open XML и показывает, как сгенерировать код для любого элемента, на который вы нажимаете.
Кроме того, чтобы узнать больше о средствах управления содержимым, вы можете проверить эти сообщения:
Ответ 2
Можете ли вы использовать переменные/поля документа? Просто перейдите в Insert- > Quick Parts- > Fields- > Doc Variable, введите имя переменной.
Пример:
http://www.codeproject.com/KB/office/Fill_Mergefields.aspx
Вы также можете просто использовать текстовые значения заполнителя, такие как "## insert_first_name ##", а затем выполнить поиск и заменить эти переменные.
Пример:
http://geekswithblogs.net/DanBedassa/archive/2009/01/16/dynamically-generating-word-2007-.docx-documents-using-.net.aspx
Ответ 3
Я думаю, что вы ищете либо закладки, либо элементы управления контентом (на вкладке Developer Ribbon, пример кода здесь)
Я использовал Named Ranges в Excel для этой же цели.
Ответ 4
Есть несколько вариантов для этого.
Я создал простую библиотеку с открытым исходным кодом, которая заменит теги на значения.
Например Hi {name}
с data={name:"John"}
будет заменен на Hi John
.
Вот он:
https://github.com/edi9999/docxtemplater
Демо: http://javascript-ninja.fr/docxgenjs/examples/demo.html