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

StackOverflow https://stackoverflow.com/questions/1361588

  •  20-09-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

Есть несколько вариантов сделать это.

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

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

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

ДЕМОНСТРАЦИЯ: http://javascript-ninja.fr/docxgenjs/examples/demo.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top