Генерация документов Word по шаблону из C#
EasyDox.dll – это бесплатная .NET библиотека для генерации вордовских документов (docx) по шаблону. Использовать ее очень просто:
var fieldValues = new Dictionary <string, string> {
{"№ договора", "123-456/АГ"},
{"Сторона 1", "ООО «Ромашка»"},
{"Сторона 2", "ЗАО «Тюльпан»"},
{"Подписант 1", "Иванов И.П."},
{"Должность 1", "генеральный директор"},
{"Основание 1", "Устав"},
};
var engine = new Engine ();
engine.Merge ("c:\\template.docx", fieldValues, "c:\\output.docx");
Функция Merge читает указанный файл шаблона и подставляет в него значения полей, заданных параметром fieldValues, и затем сохраняет результат в "c:\output.docx".
Например, шаблон:
ДОГОВОР № № договора
Сторона 1 и Сторона 2 заключили настоящий Договор о нижеследующем...
После подстановки значений полей превращается в:
ДОГОВОР № 123-456/АГ
ООО «Ромашка» и ЗАО «Тюльпан» заключили настоящий Договор о нижеследующем...
Кроме простых подстановок библиотека умеет выполнять различные преобразования, такие как склонение по падежам и запись денежных сумм прописью.
Например, чтобы просклонять ФИО подписанта в договоре, добавляем в скобках (родительный):
1.1 Организация 1 в лице Должность (родительный) Подписант (родительный),
действующего на основании Основание 1 (родительный)...
После подстановок получаем связный текст:
1.1 ООО «Ромашка» в лице генерального директора Иванова И.П.,
действующего на основании Устава...
Список преобразований
Преобразование
|
Что делает
|
(родительный)
|
Ставит предшествующую позицию в родительный падеж.
|
(цифрами и прописью)
|
Преобразует число в запись суммы в рублях цифрами и прописью.
|
Текущая (первая) версия библиотеки включает в себя минимум преобразований. В последующих версиях будут добавлены остальные падежи для русского и украинского, а также возможность склонения по родам.
Библиотека расширяема и позволяет добавлять собственные преобразования. Набор пользовательских преобразований (функций) передается в конструктор класса Engine.
Поля в колонтитулах (верхних и нижних) пока не обрабатываются.
Как создать шаблон docx
Шаблон – это обычный вордовский документ с расширением docx, в который в нужных местах вставлены поля.
Чтобы вставить поле, перейдите на вкладку Вставка (Insert), нажмите Экспресс-блоки (Quick Parts), затем Поле (Field).
Откроется окно. В нем выберите тип поля MergeField, введите название поля и если нужно, преобразование в скобках:
Нажмите OK для вставки поля.
Технические параметры библиотеки
Библиотека собрана под платформу AnyCPU (MSIL).
Не требует установки OpenXml SDK.
Все классы потокобезопасны.
Скачать
Начать работу с библиотекой проще всего с примера:
Этот пример подставляет в шаблон договора ФИО директора в родительном падеже.
Добавить библиотеку EasyDox.Morpher.dll в имеющийся проект очень просто при помощи менеджера пакетов Nuget:
Пакет EasyDox.Morpher имеет зависимости от пакетов EasyDox и Morpher.API, поэтому при его установке в вашем распоряжении оказываются все нужные библиотеки.
Вам также могут быть интересны исходные коды библиотек:
Возможно, вы захотите что-то дополнить или исправить. Пулл-реквесты приветствуются.
Граф зависимостей