SmartDocGen: Автоматизация работы с Excel и Word > Полезное > Формирование документов Word по шаблону из таблицы Excel: как это устроено

Формирование документов Word по шаблону из таблицы Excel: как это устроено

Задача звучит просто: есть таблица со строками и есть заготовка документа. Надо, чтобы каждая строка превратилась в свой файл. Но как только доходит до дела, появляются вопросы: как программа понимает, что подставлять; что должно быть в заголовках; почему одно поле заменилось, а соседнее осталось в фигурных скобках.

Разберём механику по частям — не «нажмите сюда», а как эта связка устроена внутри. Тогда любую ошибку вы будете диагностировать сами за минуту.

Три части и одно правило

Связка всегда состоит из трёх элементов:

  • Таблица-источник — Excel-файл или таблица в Word. Строки — это будущие документы, колонки — это поля.
  • Папка с шаблонами — один или несколько .docx, а также макеты-картинки, если бланк существует только в виде изображения.
  • Папка результата — пустая папка, куда лягут готовые файлы.

Правило, на котором держится вся конструкция, ровно одно: имя колонки в таблице должно совпадать с именем плейсхолдера в шаблоне. Всё остальное — следствия этого правила.

Если в шапке таблицы стоит колонка «Должность», то в шаблоне место для неё обозначается как {{Должность}}. Программа не угадывает по смыслу и не ищет похожие названия — она сопоставляет строки. Это, кстати, хорошая новость: поведение предсказуемое, и когда что-то не подставилось, причина всегда одна и та же.

Как плейсхолдер находит свою колонку

Плейсхолдер — это имя колонки, обёрнутое в двойные фигурные скобки. В момент обработки программа берёт строку таблицы, составляет из неё пары «заголовок — значение» и проходит по документу, заменяя каждое совпадение.

Несколько практических следствий, которые экономят часы отладки:

Пробелы внутри скобок имеют значение. Запись {{ ФИО }} — это не то же самое, что {{ФИО}}. Если в заголовке колонки «ФИО» без пробелов, а в шаблоне вы поставили пробелы, совпадения не будет.

Заголовок берётся из первой строки листа. Не из второй, не из объединённой ячейки, не из подписи над таблицей. Первая строка — и точка. Колонки с пустым заголовком просто пропускаются: если между «ФИО» и «Должность» затесалась безымянная служебная колонка, она не станет полем.

Один плейсхолдер можно ставить сколько угодно раз. Номер договора нужен в шапке, в теле и в колонтитуле — ставьте {{Номер}} во все три места, заменится везде.

Плейсхолдер работает не только в тексте. Он подставляется в ячейках таблиц, во вложенных таблицах (таблица внутри ячейки другой таблицы), в надписях и фигурах, а также в колонтитулах — включая отдельный колонтитул первой страницы и колонтитулы чётных страниц. Это важная деталь: у многих бланков номер и дата живут именно в колонтитуле.

Незаполненное значение даёт пустое место, а не ошибку. Если ячейка пуста, плейсхолдер просто исчезнет из документа. То же произойдёт, если в ячейке стоит одно из служебных слов-заглушек: «нет», «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.202614117Иванов отпуск
Петрова М. А.Петровой М. А.бухгалтер01.10.202628118Петрова отпуск

Обратите внимание на колонку «ФИО_дат». Она заполнена руками — это плата за отсутствие морфологии. Зато в приказе гарантированно будет «Предоставить Иванову И. И.», а не «Предоставить Иванов И. И.».

Шаблон. Обычный приказ в Word, где на месте переменных стоят плейсхолдеры:

ПРИКАЗ № {{Номер}}

О предоставлении ежегодного оплачиваемого отпуска

ПРИКАЗЫВАЮ:

Предоставить {{ФИО_дат}}, {{Должность}}, ежегодный оплачиваемый
отпуск продолжительностью {{Дней}} календарных дней
с {{Дата начала}}.

Запуск. Указываем три пути: файл таблицы, папку шаблонов, папку результата. Выбираем раскладку по шаблонам, потому что нужен один вид документа на всех. Запускаем.

Результат. Папка «Приказ», в ней тридцать файлов вида Иванов отпуск Приказ row1.docx. Каждый — обычный документ Word, который открывается, правится и подписывается как любой другой. Никаких связей с исходной таблицей у него нет: файл самодостаточен.

Если в ту же папку шаблонов положить ещё и Реестр group.docx с размеченной строкой таблицы, за тот же запуск получится дополнительно сводный реестр всех тридцати приказов.

Где ломается и как понять почему

Почти все проблемы сводятся к четырём причинам. Диагностика занимает минуту, если знать, куда смотреть.

Плейсхолдер остался в документе как есть. Значит, совпадения имён не произошло. Проверьте по порядку: точное написание (регистр, буква «ё», латинская «c» вместо русской), лишние пробелы внутри скобок, наличие такой колонки в первой строке листа. Девять раз из десяти виноват пробел или опечатка.

Плейсхолдер разорван форматированием. Коварный случай: визуально в документе {{ФИО}}, а внутри Word хранит его как несколько фрагментов — например, если вы случайно выделили курсивом одну букву или редактировали текст по частям. Лечится просто: удалите плейсхолдер целиком и наберите заново одним движением, не форматируя посимвольно.

Число подставилось не в том виде. Смотрите на ячейку в Excel. Если там текст, а не число, формат применён не будет. Если формат ячейки «Общий», программе неоткуда взять разрядность — задайте нужный числовой формат в самой таблице, и он перенесётся.

Часть строк не обработалась. Проверьте колонку «ГЕН», если она есть: значение «Нет» — это пропуск. Второе место — пустые строки в конце таблицы: строка, где не заполнено ничего, в обработку не попадает.

Отдельно стоит сказать про картинки. Если в документе нужна фотография или подпись, используется особый вид плейсхолдера — {{IMG:Фото}}, а в колонке «IMG:Фото» указывается имя файла картинки, лежащей в папке шаблонов. Размер задаётся прямо в плейсхолдере: {{IMG:Подпись-w:40}} ограничит ширину сорока миллиметрами. Это отдельная большая тема, и разбирать её здесь не будем.

Чего эта связка не решает

Механика «таблица + шаблон» закрывает подстановку данных, и только её. Честный список того, что останется на вас:

  • Условная логика. «Если сотрудник совместитель — добавить абзац» внутри одного документа не делается. Обходятся двумя способами: разные шаблоны в разных папках и два запуска, либо колонка с готовым текстом абзаца, которая подставляется целиком.
  • Склонение и расчёты. Падежи, сумма прописью, срок в днях — это колонки таблицы, заполненные формулами или руками.
  • Готовый PDF. На выходе — файлы .docx и картинки. Конвертация в PDF, если она нужна, делается отдельно средствами Word.
  • Проверка содержания. Программа подставит то, что лежит в ячейке, включая опечатку. Ответственность за содержание документа остаётся за тем, кто его подписывает.

Ещё одно замечание, которое стоит держать в голове: этот подход не заменяет штатное слияние Word. Слияние бесплатно и встроено в Word, и для простой рассылки писем его хватает с запасом. Разница проявляется там, где нужны отдельные файлы с осмысленными именами, картинки в документах или макет-изображение вместо .docx.

Что попробовать прямо сейчас

Соберите минимальный тест: три строки в таблице, один короткий шаблон с двумя-тремя плейсхолдерами, пустая папка. Пять минут работы — и вы увидите, как связка ведёт себя на ваших данных, до того как размечать реальный договор на четыре страницы.

Именно так стоит проверять любую программу этого класса: не на демо-файлах из комплекта, а на своей настоящей таблице со всеми её кривыми ФИО и объединёнными ячейками.

В SmartDocGen описанная механика работает именно так, как разобрано выше: раскладка по строкам и по шаблонам, колонки «Имя файла» и «ГЕН», групповые шаблоны, форматы чисел из Excel, плейсхолдеры в колонтитулах и таблицах. Обработка идёт локально — таблица с персональными данными не загружается ни на какой сервер, что обычно снимает главный вопрос службы безопасности.

Бесплатного демо-режима у программы нет: установщик скачивается свободно, но для запуска нужен код активации. Дешевле всего проверить по тарифу на месяц — 399 ₽: этого достаточно, чтобы прогнать реальную задачу и решить, нужна она вам дальше или нет.

Посмотрите, как SmartDocGen работает на практике

В статье мы разобрали поставленную задачу. А здесь вы можете увидеть реальный пример: за несколько секунд программа превращает Excel-таблицу в десятки готовых документов:
03:51
В видео вы увидите, как SmartDocGen:
  • Создаёт сотни документов меньше чем за минуту
  • Сохраняет все шрифты, стили и форматирование
  • Одинаково хорошо работает с Excel и Word-шаблонами
Пошагово процесс выглядит так:
  • Загружается Excel-файл или таблица Word с данными
  • Указывается папка с шаблонами Word и изображениями
  • Задаётся папка для сохранения готовых документов
  • Запускается автоматическая обработка
Готовые файлы формируются мгновенно и сохраняют нужное оформление, структуру и имена.
Хочу так же — купить за 399₽/месяц
Установка 2 минуты. Возврат 100% в течение 14 дней
Просто нажмите и получите результат
Всего 4 кнопки — и документы формируются автоматически, с нужным оформлением и названиями.
Получить сейчас

Автоматизируйте документы по лучшей цене

Выберите подходящий срок лицензии — функционал во всех тарифах одинаково полный: массовая обработка Excel и Word, сохранение форматирования, поддержка и обновления.
Тариф "На 1 год"
Период действия: 12 месяцев
2990₽
Выгода 38% (экономия 1798₽)
Полный функционал программы:
  • Массовая обработка Excel → Word и Excel → PNG/JPEG
  • Неограниченное кол-во документов и изображений
  • Техподдержка + обновления (12 мес.)
Приобрести
⭐⭐⭐
Работает на:
Тариф "На 3 месяца"
Период действия: 3 месяца
990₽
Выгода 17% (экономия 207₽)
Полный функционал программы:
  • Массовая обработка Excel → Word и Excel → PNG/JPEG
  • Неограниченное кол-во документов и изображений
  • Техподдержка + обновления (3 мес.)
Приобрести
ХИТ
Работает на:
Тариф "На 1 месяц"
Период действия: 1 месяц
399₽
Полный функционал программы:
  • Массовая обработка Excel → Word и Excel → PNG/JPEG
  • Неограниченное кол-во документов и изображений
  • Техподдержка + обновления (1 мес.)
Приобрести
Работает на:
РобокассаЮ КассаТ Банк
Хотите узнать больше о возможностях SmartDocGen?
Хотите узнать больше о возможностях SmartDocGen?Перейдите на главную страницу и убедитесь сами.
Перейти на главную