До смешного простой код, который может сэкономить вам кучу времени в будущем. И как фанат автоматизации, который старается избегать любой однообразной и рутинной работы, я от таких решений просто в восторге. Про проекты в этой теме кстати рассказываю здесь.
Впервые с такой задачей я столкнулась много лет назад, когда ко мне пришла моя арендодательница, у которой я снимала квартиру в Питере, с запросом из серии "ну тыж программист" (хотя тогда я еще работала инженером и у меня не было каких-то супер знаний в разработке, так что могу точно заверить, что с этим кодом справится практически любой начинающий разработчик). Она занималась организацией детских танцевальных конкурсов регионального (или выше) уровня и на каждые соревнования нанимала отдельного человека, который в течение двух дней печатал дипломы.
Детей были сотни, дипломов тоже, и чисто из-за человеческого фактора естественно и брака было довольного много. И она попросила как-то это автоматизировать (тыж программист).
Технически задача выглядела так: по итогам каждого этапа соревнований формировалась экселевская табличка, каждая строчка которой содержала информацию о ребенке/танцевальном коллективе, руководителе, номинации, программе и месте (диплом 1, 2 или 3 степени). Соотвественно, по данным из каждой строчки нужно было сформировать отдельный диплом по шаблону.
Шаблон же представлял из себя обычный вордовский документ, куда в определённые места нужно вставить данные из таблицы. Задача типичная для многих и когда я создавала свой курс по автоматизации рутинных задач на python, я вспомнила про эту историю и посвятила этому одну практическую работу, которую вы, собственно, ниже и увидите.
Данными талантливых детей я конечно же светить не буду, но для своих слушателей я целый вечер придумывала базу данных с воображаемыми сотрудниками, которым нужно нагенерировать заявлений на отпуск. Задача полностью аналогичная: таблица Excel с информацией о сотрудниках и датами отпусков, шаблон заявления в Word. Демонстрация ниже.
Все данные были придуманы из головы, совпадения с реальными лицами абсолютно случайны. Адреса электронных почт я также придумала, многие введены специально некорректно для практики по регулярным выражениям на моем курсе.
Подготовка шаблона
Теперь рассмотрим все это на примере. Сначала шаблон нужно подготовить, то есть указать места в документе, куда мы будем подставлять данные.
Как это сделать: в те места в нашем шаблоне, куда будут подставляться какие-то данные, мы вставляем двойные фигурные скобки и название переменной, которую далее подставим. Пример ниже.
Форматирование мы задаем не в коде, а в самом шаблоне. То есть все, что связано с шрифтом, размером, отступами и тд — это все ручками сами указываем в шаблоне документа. Естественно, это можно сделать и в коде, но в этой статье мы этого делать не будем, а только подставим данные.

Код для подстановки каких-то данных в шаблон до смешного прост.
re>pip install docxtpl
Давайте пошагово разберем, что тут происходит:
Запускаем код и видим результат

Подключаем таблицу
re> pip install openpyxl
Основные возможности
- Чтение данных: OpenPyXL позволяет считывать данные из существующих файлов Excel.
- Запись данных: Библиотека позволяет создавать новые файлы Excel и записывать данные в эти файлы.
- Модификация данных: Вы можете изменять существующие данные в таблицах Excel, добавлять новые строки, изменять форматирование и т.д.
- Работа с формулами: OpenPyXL поддерживает использование формул Excel, позволяя вычислять значения на основе других ячеек.
Какие функции этой библиотеки нам сейчас понадобятся:
re>sheet = wb['vacation']
Эта строчка кода извлекает рабочий лист (worksheet) из рабочей книги (workbook) wb и присваивает его переменной sheet . В данном случае, мы извлекаем лист с именем ‘vacation’. Если такого листа не существует, будет вызвано исключение.
Далее из этого листа мы уже можем извлекать данные (из конкретных ячеек).

Посмотрим внимательно на одну строку из таблицы. Придумаем алгоритм для одного сотрудника и дальше уже не составит труда в цикле применить его для остальных.
Например, нам нужно заполнить заявление для первого сотрудника — вторая строчка таблицы. Соотвественно, нужно достать данные из ячеек A2(фамилия), B2(имя), D2(компания), F2(начало отпуска) и G2(конец отпуска).
Достать данные из конкретной ячейки можно следующей командой
re>sheet['A2'].value
После выполнения этой строки кода будет возвращено значение, которое содержится в ячейке A2 рабочего листа sheet .
Тогда для остальных ячеек это будет выглядеть так:
re>name = sheet['B2'].value last_name = sheet['A2'].value company = sheet['D2'].value start_data = sheet['F2'].value.date() end_data = sheet['G2'].value.date()
К датам еще добавляю функцию .date(), чтобы она возвращалась не в формате », а хотя бы 2022-05-01.
Дополняем код, написанный в прошлой части для формирования заявления с данными из таблицы для первого сотрудника
Обратите внимание, что я заменила данные в словаре context на переменные. Можно было бы сделать и без промежуточных переменных и сразу сформировать словарь, но в перспективе вам может понадобиться добавить какие-то проверки, что в словаре сделать не получится.
Получается, что код для первого сотрудника готов, осталось добавить цикл и нагенерировать заявлений для всех остальных. По сути, единственное, что будет меняться в коде для каждого сотрудника это индекс ячеек, поэтому давайте привяжем его к счётчику в цикле.
Конструкция [‘B’+str(num)] будет по очереди возвращать B2, B3, B4 и тд.

range(2,6) — начинаем с индекса 2, так как первая строчка таблицы это заголовки, а до 6 чисто для тестирования кода, потому что если вы допустите ошибку, то будет проще удалить несколько тестовых заявлений, чем пару сотен. Если несколько тестовых документов сформировались корректно, то уже можно заменить конечное число на нужное количество (либо вручную, либо использовать len(list(sheet.rows)+1 )
Запускаем код и наслаждаемся результатом.
В своем канале IT как цифровое творчество пишу про автоматизацию, разные интересные обучения, создание курсов, рассказываю про свой опыт и о том, как я от инженера на заводе дошла до создания IT-стартапа, даю рекомендации и анонсирую запуски интересных проектов по разработке.
Надеюсь, что материал был вам полезен! И успехов в ваших начинаниях!
Формат отчета в Word

Создание отчета иногда может показаться сложной задачей, особенно при профессиональной организации информации. Итак, что такое формат отчета в Word? Это структурированный способ представления результатов или информации четко и кратко, что делает ее понятной для читателей. Эта статья проведет вас через стандарты типичного макета отчета в Microsoft Word, помогая вам создать ценный документ для академического, профессионального или личного использования.
Переключать
Компоненты отчета
Прежде чем приступить к форматированию, важно понять основные элементы отчета. Знание того, что входит в отчет, может упростить процесс написания и повысить ясность.
Титульная страница
Титульный лист — это первое впечатление, которое произведет ваш отчет. Он должен включать:
- Название отчета: Сделайте его достаточно описательным, чтобы дать общее представление о содержании.
- Ваше имя: Укажите имя автора на видном месте.
- Дата: Всегда указывайте в отчете дату завершения.
- Дополнительная информация: Если применимо, укажите название курса, профессора или любую другую соответствующую информацию.
Оглавление (ToC) — это не просто полезный инструмент навигации; оно дает обзор структуры документа. Чтобы создать ToC в Word:
- Используйте стили заголовков для своих заголовков.
- Перейдите в раздел «Ссылки».
- Выберите стиль, нажав «Оглавление».
Благодаря этому вы даете читателям возможность напрямую переходить к интересующим их разделам, что повышает общее удобство использования вашего отчета.
Управляющее резюме
Резюме представляет собой краткий обзор отчета, отражающий основные идеи в нескольких абзацах. Этот раздел жизненно важен, поскольку он позволяет занятым читателям понять суть ваших выводов, не читая весь документ. Будьте ясны и лаконичны, суммируя цель, методы и значимые выводы.
Введение
Введение задает тон вашему отчету. Оно должно:
- Представьте тему и ее важность.
- Укажите цель отчета.
- Кратко опишите структуру отчета.
Показывая читателям, чего ожидать, вы готовите их к последующему контенту.
Основная часть отчета
Тело — это то место, где будет находиться большая часть вашей информации. Этот раздел может быть многогранным, обычно его можно разбить на:
- Исходная информация: Предоставьте необходимый контекст по теме.
- Анализ: Подробно обсудите свои исследования, доказательства и выводы. Используйте заголовки и подзаголовки для сегментации идей.
- Обсуждение: Проанализируйте, что означают ваши выводы относительно ваших первоначальных вопросов или целей.
Хорошие отчеты имеют логическую последовательность, поэтому обеспечьте плавный переход каждого раздела в следующий.
Заключение вашего отчета содержит основные выводы и их последствия. Он должен отвечать на вопрос отчета и суммировать ваш анализ. Если применимо, рассмотрите возможность включения рекомендаций или предложений для дальнейшего исследования.
Рекомендации
Перечислите все источники, которые вы использовали для составления отчета. Word позволяет использовать свои инструменты ссылок для быстрого форматирования ссылок в различных стилях, таких как APA, MLA или Chicago.
- Перейдите на вкладку «Ссылки».
- Нажмите «Вставить ссылку», чтобы добавить источники.
- Используйте раздел «Библиография» для создания списка литературы в конце документа.
Форматирование отчета в Word
После того, как вы структурировали свой контент, пришло время сосредоточиться на форматировании. Организованный формат делает ваш отчет более удобным для чтения и добавляет профессионализма.
Макет страницы
Чтобы настроить документ для оптимальной читаемости:
- Поля: Стандартные поля обычно составляют 1 дюйм с каждой стороны.
- Стиль шрифта: Используйте читабельный шрифт, например Times New Roman или Arial, часто размером 12 пунктов.
- Межстрочный интервал: Двойной интервал значительно улучшает читаемость для многих читателей.
- Верхние и нижние колонтитулы: Для удобства навигации включите номера страниц и название или подзаголовок документа в верхний или нижний колонтитул.
Использование стилей в Word
Использование встроенных стилей в Microsoft Word может помочь поддерживать единообразие во всем отчете. Настройте стили для уровней заголовков, чтобы создать иерархию, которой вы можете легко управлять через вкладку «Главная». Выделите текст и выберите нужный стиль, обеспечив единообразие в похожих разделах.
Добавление визуальных эффектов
Визуальные средства, такие как диаграммы, таблицы и изображения, могут усилить аргументы и прояснить данные. Чтобы добавить визуальные элементы:
- Нажмите на вкладку «Вставить».
- Выберите нужный визуальный элемент (диаграмма, изображение, SmartArt).
- Отформатируйте и расположите по мере необходимости для обеспечения ясности.




