Задача звучит просто: есть таблица со строками и есть заготовка документа. Надо, чтобы каждая строка превратилась в свой файл. Но как только доходит до дела, появляются вопросы: как программа понимает, что подставлять; что должно быть в заголовках; почему одно поле заменилось, а соседнее осталось в фигурных скобках.
Разберём механику по частям — не «нажмите сюда», а как эта связка устроена внутри. Тогда любую ошибку вы будете диагностировать сами за минуту.
Связка всегда состоит из трёх элементов:
Правило, на котором держится вся конструкция, ровно одно: имя колонки в таблице должно совпадать с именем плейсхолдера в шаблоне. Всё остальное — следствия этого правила.
Если в шапке таблицы стоит колонка «Должность», то в шаблоне место для неё обозначается как {{Должность}}. Программа не угадывает по смыслу и не ищет похожие названия — она сопоставляет строки. Это, кстати, хорошая новость: поведение предсказуемое, и когда что-то не подставилось, причина всегда одна и та же.
Плейсхолдер — это имя колонки, обёрнутое в двойные фигурные скобки. В момент обработки программа берёт строку таблицы, составляет из неё пары «заголовок — значение» и проходит по документу, заменяя каждое совпадение.
Несколько практических следствий, которые экономят часы отладки:
Пробелы внутри скобок имеют значение. Запись {{ ФИО }} — это не то же самое, что {{ФИО}}. Если в заголовке колонки «ФИО» без пробелов, а в шаблоне вы поставили пробелы, совпадения не будет.
Заголовок берётся из первой строки листа. Не из второй, не из объединённой ячейки, не из подписи над таблицей. Первая строка — и точка. Колонки с пустым заголовком просто пропускаются: если между «ФИО» и «Должность» затесалась безымянная служебная колонка, она не станет полем.
Один плейсхолдер можно ставить сколько угодно раз. Номер договора нужен в шапке, в теле и в колонтитуле — ставьте {{Номер}} во все три места, заменится везде.
Плейсхолдер работает не только в тексте. Он подставляется в ячейках таблиц, во вложенных таблицах (таблица внутри ячейки другой таблицы), в надписях и фигурах, а также в колонтитулах — включая отдельный колонтитул первой страницы и колонтитулы чётных страниц. Это важная деталь: у многих бланков номер и дата живут именно в колонтитуле.
Незаполненное значение даёт пустое место, а не ошибку. Если ячейка пуста, плейсхолдер просто исчезнет из документа. То же произойдёт, если в ячейке стоит одно из служебных слов-заглушек: «нет», «no», «none», «n/a», «пусто». Это удобно, когда часть строк заполнена не полностью, — не придётся чистить таблицу вручную.
Требования к источнику простые, но каждое из них кто-то однажды нарушил.
Заголовки — в первой строке, по одному на колонку. Без объединённых ячеек, без двухэтажной шапки, без пустой строки перед заголовками.
Одна строка — один документ. Если данные об одном договоре размазаны по трём строкам, получится три договора. Приведите таблицу к плоскому виду: всё, что относится к одному документу, должно лежать в одной строке.
Можно использовать несколько листов книги. Не самая очевидная возможность: данные собираются со всех листов, а заголовки объединяются в общий набор. Если на первом листе лежат ФИО и должности, а на втором — паспортные данные тех же людей в том же порядке, обе группы колонок будут доступны как поля. Строки сопоставляются по порядковому номеру, так что порядок на листах должен совпадать.
Числа и даты лучше хранить как числа и даты. Формат из ячейки Excel переносится в документ: если в таблице настроен формат «# ##0,00», в готовом файле появится «1 250 000,00» — с неразрывным пробелом между разрядами и запятой, как принято в русской типографике. Даты приводятся к виду 15.03.2026 автоматически. А вот если сумма записана текстом, она и подставится текстом — ровно как набрана.
Всё, что требует вычислений, считайте в таблице. Сумма прописью, ФИО в дательном падеже, срок в месяцах — это отдельные колонки, которые вы заполняете формулами Excel. Программа не склоняет и не считает: она подставляет то, что видит. Это ограничение, но зато никаких сюрпризов с неправильным падежом в готовом договоре.
Файл не должен содержать макросов. Книга с макросами будет отклонена — её нужно пересохранить в обычный .xlsx. Ограничение по размеру файла — 50 МБ, для таблиц с данными это очень много.
Здесь есть выбор из двух схем раскладки, и он влияет на то, насколько удобно потом разбирать результат.
Раскладка по строкам. На каждую строку таблицы создаётся своя папка: Row_1, Row_2 и так далее. Внутри — все документы, сгенерированные по этой строке из всех шаблонов сразу. Подходит, когда на одного человека готовится комплект: договор, приказ, согласие, карточка. Открыл папку — вот весь пакет по сотруднику.
Раскладка по шаблонам. На каждый шаблон создаётся своя папка, а внутри лежат документы по всем строкам. Подходит, когда нужен один вид документа на всех: папка «Приказы» с тридцатью приказами.
Имя файла складывается из имени шаблона и номера строки: Приказ row7.docx. Само по себе это не очень информативно, поэтому есть служебная колонка.
Колонка «Имя файла». Заведите в таблице колонку с таким названием (подойдёт и английское «Filename»), и её значение станет началом имени готового документа. Вместо Приказ row7.docx получится Иванов И.И. Приказ row7.docx. Недопустимые для файловой системы символы заменяются автоматически, так что можно не бояться слэшей и двоеточий в данных.
Мелочь, а меняет всё: папка из двухсот файлов с фамилиями просматривается глазами, папка из двухсот «Документ_N» — нет.
Колонка «ГЕН». Ещё одна служебная колонка: если поставить в ней значение «Нет», строка целиком пропускается. Это простой способ сгенерировать не всю таблицу, а выборку, — не удаляя и не пряча строки. Пустое значение или «Да» означают «генерировать».
Бывает обратная задача: не тридцать приказов, а одна ведомость, где тридцать строк. Реестр выданных удостоверений, список участников, сводная таблица к отчёту.
Для этого есть отдельный тип шаблона — групповой. Опознаётся он по имени файла: если в названии .docx есть слово group, шаблон считается групповым. Логика внутри такая:
То есть шаблон реестра выглядит как таблица с шапкой и одной строкой-образцом вида {{№}} | {{ФИО}} | {{Номер удостоверения}} | {{Дата выдачи}}. На выходе получится документ, где эта строка повторена столько раз, сколько записей в таблице.
Групповой и обычный шаблоны спокойно лежат в одной папке и обрабатываются за один запуск: получите и пачку персональных документов, и общий реестр к ней.
Разберём сценарий целиком, чтобы было видно, как части складываются.
Исходные данные. Кадровик готовит приказы о предоставлении отпуска. Есть таблица сотрудников:
| ФИО | ФИО_дат | Должность | Дата начала | Дней | Номер | Имя файла |
|---|---|---|---|---|---|---|
| Иванов И. И. | Иванову И. И. | инженер | 15.09.2026 | 14 | 117 | Иванов отпуск |
| Петрова М. А. | Петровой М. А. | бухгалтер | 01.10.2026 | 28 | 118 | Петрова отпуск |
Обратите внимание на колонку «ФИО_дат». Она заполнена руками — это плата за отсутствие морфологии. Зато в приказе гарантированно будет «Предоставить Иванову И. И.», а не «Предоставить Иванов И. И.».
Шаблон. Обычный приказ в Word, где на месте переменных стоят плейсхолдеры:
ПРИКАЗ № {{Номер}}
О предоставлении ежегодного оплачиваемого отпуска
ПРИКАЗЫВАЮ:
Предоставить {{ФИО_дат}}, {{Должность}}, ежегодный оплачиваемый
отпуск продолжительностью {{Дней}} календарных дней
с {{Дата начала}}.Запуск. Указываем три пути: файл таблицы, папку шаблонов, папку результата. Выбираем раскладку по шаблонам, потому что нужен один вид документа на всех. Запускаем.
Результат. Папка «Приказ», в ней тридцать файлов вида Иванов отпуск Приказ row1.docx. Каждый — обычный документ Word, который открывается, правится и подписывается как любой другой. Никаких связей с исходной таблицей у него нет: файл самодостаточен.
Если в ту же папку шаблонов положить ещё и Реестр group.docx с размеченной строкой таблицы, за тот же запуск получится дополнительно сводный реестр всех тридцати приказов.
Почти все проблемы сводятся к четырём причинам. Диагностика занимает минуту, если знать, куда смотреть.
Плейсхолдер остался в документе как есть. Значит, совпадения имён не произошло. Проверьте по порядку: точное написание (регистр, буква «ё», латинская «c» вместо русской), лишние пробелы внутри скобок, наличие такой колонки в первой строке листа. Девять раз из десяти виноват пробел или опечатка.
Плейсхолдер разорван форматированием. Коварный случай: визуально в документе {{ФИО}}, а внутри Word хранит его как несколько фрагментов — например, если вы случайно выделили курсивом одну букву или редактировали текст по частям. Лечится просто: удалите плейсхолдер целиком и наберите заново одним движением, не форматируя посимвольно.
Число подставилось не в том виде. Смотрите на ячейку в Excel. Если там текст, а не число, формат применён не будет. Если формат ячейки «Общий», программе неоткуда взять разрядность — задайте нужный числовой формат в самой таблице, и он перенесётся.
Часть строк не обработалась. Проверьте колонку «ГЕН», если она есть: значение «Нет» — это пропуск. Второе место — пустые строки в конце таблицы: строка, где не заполнено ничего, в обработку не попадает.
Отдельно стоит сказать про картинки. Если в документе нужна фотография или подпись, используется особый вид плейсхолдера — {{IMG:Фото}}, а в колонке «IMG:Фото» указывается имя файла картинки, лежащей в папке шаблонов. Размер задаётся прямо в плейсхолдере: {{IMG:Подпись-w:40}} ограничит ширину сорока миллиметрами. Это отдельная большая тема, и разбирать её здесь не будем.
Механика «таблица + шаблон» закрывает подстановку данных, и только её. Честный список того, что останется на вас:
Ещё одно замечание, которое стоит держать в голове: этот подход не заменяет штатное слияние Word. Слияние бесплатно и встроено в Word, и для простой рассылки писем его хватает с запасом. Разница проявляется там, где нужны отдельные файлы с осмысленными именами, картинки в документах или макет-изображение вместо .docx.
Соберите минимальный тест: три строки в таблице, один короткий шаблон с двумя-тремя плейсхолдерами, пустая папка. Пять минут работы — и вы увидите, как связка ведёт себя на ваших данных, до того как размечать реальный договор на четыре страницы.
Именно так стоит проверять любую программу этого класса: не на демо-файлах из комплекта, а на своей настоящей таблице со всеми её кривыми ФИО и объединёнными ячейками.
В SmartDocGen описанная механика работает именно так, как разобрано выше: раскладка по строкам и по шаблонам, колонки «Имя файла» и «ГЕН», групповые шаблоны, форматы чисел из Excel, плейсхолдеры в колонтитулах и таблицах. Обработка идёт локально — таблица с персональными данными не загружается ни на какой сервер, что обычно снимает главный вопрос службы безопасности.
Бесплатного демо-режима у программы нет: установщик скачивается свободно, но для запуска нужен код активации. Дешевле всего проверить по тарифу на месяц — 399 ₽: этого достаточно, чтобы прогнать реальную задачу и решить, нужна она вам дальше или нет.


