Генерация документов 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, поэтому при его установке в вашем распоряжении оказываются все нужные библиотеки.
 Вам также могут быть интересны исходные коды библиотек:
    Возможно, вы захотите что-то дополнить или исправить. Пулл-реквесты приветствуются.
Граф зависимостей