Python в Excel часть 1

Python в Excel часть 1


Добрый день, уважаемые читатели блога! Как видно из названия статьи - сегодня поговорим о наболевшей ситуации запуска python кода в Excel.

Я столкнулся с невозможностью стандартными средствами запустить python код для обработки данных прямо в книге Excel.
Жадность корпорации Microsoft не знает границ, особенно в отношении пользователей России. Весь встроенный функционал (для работы с python) требует активной подписки на Office 365. Что делать если её нет? Использовать "Надстройки"!

Зачем вообще нужен python в Excel? Ответ прост - Excel как довольно "старая" программа, написанная на VBA, не может полностью удовлетворить современные требования к обработке данных и не предоставляет возможности, которые открывает python, но сама по себе удобна.  Поэтому и будем их дружить.
Если будет интересно - про python буду писать ещё.

 

XLWINGS

Недолго погуглив, я обнаружил довольно простую в установке и использовании надстройку - Xlwings, её и буду использовать в дальнейшем.
Оговорюсь что нам понадобится для старта:

  • MS Excel (у меня 365 без активной подписки);
  • установленный python (у меня установлена версия 3.12.3)ссылка ведёт на версию 3.15 (для проверки кода локально, в надстройке установлена версия 3.14.2);
  • сама надстройка xlwings (прикладываю ссылку на исходный код);
  • включенный режим "Необязательных сетевых функций", Файл -> Учётная запись -> Параметры конфиденциальности -> Выставить галку у "Необязательные сетевые функции".

Python в Excel

 

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

 

Python в Excel

Как только надстройка установится, перезапускаем Excel и наблюдаем кнопку в ленте. Сразу оговорюсь - используем бесплатную версию Lite (кому интересно - есть платная).

Python в Excel

 

Интерфейс и использование XLWINGS

 

Интерфейс прост и понятен:

  1. Меню надстройки;
  2. Запуск и параметры запуска  python кода;
  3.  вкладки со криптами python;
  4. код python;
  5. окно вывода результатов скрипта.

Python в Excel

 

Если нажать на "Run Hello World" в ячейке А1 появится данный текст, на жёлтом фоне. Если нажать на треугольник после "Run Hello World" - появится список доступных параметров запуска, включая демонстрационные материла (диаграммы и "самописные" функции).

 

Python в Excel

 

От нас "лишь" требуется написать правильный код на python! Один важный момент - это не полноценный python инстанс в приложении, а его максимально близкая адаптация под Excel. Поэтому в настройках нас также будет интересовать вкладка "requiremetns" - это список python пакетов, необходимый для работы надстройки.

Решение простых задач

Давайте попробуем решить простую задачу с помощью надстройки - вставить и оформить таблицу на лист.
Лист будет называться "График дежурств Октябрь 2026", таблица будет состоять из трёх столбцов: ФИО, должность, время начала смены, заголовок должен быть жирным, 14 размером шрифта.
В главном файле main.py вставляем следующий код:

import asyncio
import datetime as dt

import xlwings as xw
from xlwings import *

@script(name="Добавление тестовой таблицы")
def format_table_insert_sample(book: xw.Book):

# Добавляем новый лист
sheet = book.sheets.add("График дежурств октябрь 2026")

# Добавляем заголовок
title_cell = sheet["A1"]
title_cell.value = "ФИО"
title_cell.font.bold = True
title_cell.font.size = 18
title_cell.font.color = "#000000"
title_cell.columns.autofit()
title_cell.font.name = "Times New Roman"
title_cell = sheet["B1"]
title_cell.value = "Должность"
title_cell.font.bold = True
title_cell.font.size = 18
title_cell.font.color = "#000000"
title_cell.columns.autofit()
title_cell.font.name = "Times New Roman"
title_cell = sheet["C1"]
title_cell.value = "Время начала смены"
title_cell.font.bold = True
title_cell.font.size = 18
title_cell.font.color = "#000000"
title_cell.columns.autofit()
title_cell.font.name = "Times New Roman"
#Добавляем в ячейки столбца А значения
sheet["A2"].options(index=False).value = "Иванов И.И"
sheet["A3"].options(index=False).value = "Петров П.П"
sheet["A4"].options(index=False).value = "Сидоров С.С"
#Устанавливаем ширину столбца по содержимому
sheet["A2"].options(index=False).autofit()
sheet["A3"].options(index=False).autofit()
sheet["A4"].options(index=False).autofit()

#Аткивируем лист для перехода
sheet.activate()

 

Видим, что теперь кнопка запуска называется "Добавление тестовой таблицы", нажимаем и получаем результат.

Python в Excel

 

Теперь что бы нам ни понадобилось сделать это можно сделать с помощью python.
Код дан для примера и базового понимания работы python и надстройки. В следующих статьях рассмотрим более интересные задачи: поработаем с открытием файлов, их загрузкой и преобразованием.

Всем удачи!

Автор записи: Иван

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.