Эта программа позволяет автоматически создавать персонализированные грамоты на основе данных из Excel и шаблона Word.
Программа удобна для генерации грамот для учеников, сотрудников или участников мероприятий.
В работе педагогом приходится создавать огромное количество грамот.
Данная поделка помогает мне автоматизировать этот процесс, потому что загружать данные в эксельку мне намного легче, чем ручками в ворде делать каждую грамоту.
- Загрузка данных из Excel-файла.
- Использование шаблона Word с заполнителями (например,
{{Фамилия}}
,{{Имя}}
). - Генерация грамот в формате
.docx
и, опционально,.pdf
. - Простой графический интерфейс для выбора файлов и запуска процесса.
-
Скачайте проект или клонируйте репозиторий:
git clone https://github.com/Ivadus/Certificate-generation cd Certificate-generation
-
Создайте виртуальное окружение:
python3 -m venv venv source venv/bin/activate
-
Установите зависимости:
pip install -r requirements.txt
pandas — для чтения и обработки данных из Excel
python-docx — для работы с файлами Word
docx2pdf — для конвертации .docx в .pdf
Создайте Excel-файл (например, spiski.xlsx) с колонками: Ученик, Имя ученика, Класс, Классный руководитель.
ИЛИ возьмите шаблон в папке examples
Создайте шаблон Word (например, shablon.docx) с заполнителями: {{Ученик}}, {{Имя}}, {{Класс}}, {{Фамилия}}.
ИЛИ возьмите шаблон в папке examples
В интерфейсе выберите:
Excel-файл с данными.
Шаблон Word.
Папку для сохранения.
Отметьте "Конвертировать в PDF", если это требуется
Нажмите "Запустить".
-
Откройте шаблон shablon.docx в Microsoft Word.
-
Добавьте или измените фоновое изображение через меню "Дизайн" → "Фон страницы".
-
Сохраните шаблон — изменения применятся при следующей генерации.
В main.py в начале файла (строки 13-16) определены константы, которые задают соответствие между столбцами Excel и заполнителями в шаблоне Word, а также используются для формирования имён файлов:
COLUMN_FAMILIYA = 'Фамилия ученика'
COLUMN_IMYA = 'Имя ученика'
COLUMN_KLASS = 'Класс'
COLUMN_KL_RUK = 'Классный руководитель'
Эти константы применяются в словаре replacements (строка 55) и в именах файлов (строки 67 и 71):
replacements = {
replacements = {
'{{Фамилия}}': str(row[COLUMN_FAMILIYA]),
'{{Имя}}': str(row[COLUMN_IMYA]),
'{{Класс}}': str(row[COLUMN_KLASS]),
'{{Кл.рук}}': str(row[COLUMN_KL_RUK])
}
output_file_docx = os.path.join(output_dir, f"Грамота_{row[COLUMN_FAMILIYA]}_{row[COLUMN_IMYA]}_{index}.docx")
}
Чтобы изменить названия:
Откройте main.py и измените значения констант. Например, если в Excel столбец называется "ФИО" вместо "Фамилия ученика":
COLUMN_FAMILIYA = 'ФИО'
Если вы меняете {{Фамилия}} на {{ФИО}}, откройте shablon.docx и замените заполнитель.
Затем в replacements измените ключ:
'{{ФИО}}': str(row[COLUMN_FAMILIYA]),
Например, если COLUMN_FAMILIYA = 'ФИО', то в Excel столбец должен называться "ФИО".
Excel: Переименование столбца требует обновления соответствующей константы в main.py (например, COLUMN_FAMILIYA).
Шаблон Word: Изменение заполнителей (например, {{Имя}} → {{Имя_ученика}}) требует такого же изменения ключа в replacements.
Код: Изменения констант автоматически применяются к replacements и именам файлов, но ключи в replacements нужно обновлять вручную, если меняются заполнители в шаблоне.у.
В папке examples/:
spiski.xlsx — пример данных.
shablon.docx — пример шаблона.
Лицензия отсутствует
К сожалению, получается только создавать большое количество грамот. При попытке генерировать грамоты в один файл сбивается фоновое изображение или зависимости с экселем.
Если у вас получится это как-то решить, будет круто