Как заменить содержимое в шаблоне документа docx и Open XML SDK 2.0 (09 августа)? - PullRequest
17 голосов
/ 01 сентября 2009

У меня есть «шаблонный» документ docx, который содержит нужный макет, и я хочу вставить содержимое с помощью C #, но я не могу найти способ уникального обращения к определенным разделам документа, таким как абзацы или таблицы. Каков наилучший способ уникальной идентификации элементов в документе? Спасибо, Мэтт Шарп.

Ответы [ 4 ]

11 голосов
/ 03 сентября 2009

Как построен ваш шаблон? Использует ли он базовую XML-схему, загруженную как часть * .docx? Или вы используете элементы управления содержимым на ленте разработчика, и в этом случае каждый элемент управления уникально идентифицируется заданным именем тега? Оба этих подхода упростят идентификацию определенных разделов вашего документа, поскольку вы сможете контролировать, где будут таблицы или абзацы.

Также вы можете рассмотреть возможность использования Open XML SDK 2.0 (использует .NET 3.5). Он включает удобный инструмент Document Reflector, который позволяет открывать и проверять любой документ Open XML и показывает, как сгенерировать код для любого элемента, на который вы щелкаете.

Кроме того, чтобы узнать больше об элементах управления контентом, вы можете проверить эти сообщения:

3 голосов
/ 02 сентября 2009

Я думаю, что вы ищете закладки или элементы управления контентом (на вкладке Разработчик ленты, пример кода здесь )
Я использовал именованные диапазоны в Excel для той же цели.

3 голосов
/ 02 сентября 2009

Можете ли вы использовать переменные / поля документа? Просто зайдите в Вставка-> Быстрые детали-> Поля-> Переменная документа, введите имя переменной.

Пример: 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

1 голос
/ 22 сентября 2014

Для этого есть несколько вариантов.

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

Например, Hi {name} с data={name:"John"} будет заменено на Hi John.

Вот оно: https://github.com/edi9999/docxtemplater

Демонстрация: http://javascript -ninja.fr / docxgenjs / examples / demo.html

...