Как легко интегрировать Python в Excel с помощью PyXLL

1
компьютеры и технологии 28.webp.webp

Последнее обновление 13.11.2023 — Василий Иванов

PyXLL — это инструмент, который устраняет разрыв между Microsoft Excel и Python. Он позволяет легко интегрировать код и функции Python в электронные таблицы Excel. Благодаря PyXLL Excel становится платформой для использования библиотек и возможностей Python.

PyXLL служит надстройкой Excel. Вы можете использовать его для написания функций и макросов Python непосредственно в среде Excel VBA. Затем PyXLL выступает в роли интерпретатора и запускает код в ячейках Excel, открывая множество возможностей. Некоторые из них включают автоматизацию сложных задач, расширенный анализ данных и визуализацию данных.

Обзор PyXLL

PyXLL работает, запуская интерпретатор Python в процессе Excel. Это дает вашему коду Python, работающему в PyXLL, прямой доступ к данным и объектам Excel. Инструмент написан на C++ и использует ту же базовую технологию, что и Excel. Это означает, что код Python, работающий в PyXLL, обычно работает намного быстрее, чем код Excel VBA.

По теме:  Как пометить сообщения как прочитанные в Сообщениях Google

Установка и настройка

Чтобы установить PyXLL, зайдите на веб-сайт PyXLL и загрузите надстройку. Убедитесь, что версия Python и выбранная вами версия Excel соответствуют версиям, установленным в вашей системе. PyXLL доступен только для версии Excel для Windows.

Когда загрузка завершится, откройте командную строку и выполните следующую команду:

 pip install pyxll 

Для запуска приведенной выше команды в вашей системе должен быть установлен Pip. Затем используйте пакет PyXLL для установки надстройки PyXLL:

 pyxll install

Установщик спросит, загрузили ли вы надстройку. Введите «да», а затем укажите путь к zip-файлу, содержащему надстройку. Затем следуйте инструкциям на экране для завершения установки.

Начало работы с PyXLL

После установки плагина запустите Excel. Перед запуском появится всплывающее окно с просьбой начать пробную версию или купить сейчас. Срок действия пробной версии истечет через тридцать дней, и вам потребуется приобрести лицензию, чтобы продолжить использование PyXLL.

Нажмите кнопку «Начать пробную версию». Это запустит Excel с установленной надстройкой.

На вкладке «Пример PyXLL» нажмите кнопку «О PyXLL». Это покажет вам путь, по которому вы установили надстройку, а также пути к файлам конфигурации и журналам.

Путь, содержащий файл конфигурации, важен, так как вам нужно будет отредактировать этот файл позже, поэтому запишите его.

Представление функций Python в Excel

Чтобы представить функцию Python в Excel как определяемую пользователем функцию (UDF), используйте декоратор @xl_func. Этот декоратор инструктирует PyXLL зарегистрировать функцию в Excel, сделав ее доступной для пользователей.

Например, чтобы представить функцию Python fibonacci() в Excel как UDF, вы можете использовать декоратор @xl_func следующим образом:

 from pyxll import xl_func

@xl_func
def fibonacci(n):
  """
  This is a Python function that calculates the Fibonacci sequence.
  """
  if n < 0:
    raise ValueError("n must be non-negative")
  elif n == 0 or n == 1:
    return n
  else:
    return fibonacci(n - 1) + fibonacci(n - 2)

Сохраните этот код с расширением .py и запишите путь к папке, в которой вы сохраняете файл.

Теперь откройте файл конфигурации PyXLL в редакторе и прокрутите вниз до строки, начинающейся с «pythonpath». Обычно этот параметр представляет собой список папок, в которых PyXLL будет искать модули Python. Добавьте путь к папке, содержащей исходный код функции Фибоначчи.

Затем прокрутите вниз до «модулей» и добавьте свой модуль. Например, если вы сохранили файл как fibonacci.py, добавьте в список имя «fibonacci»:

Это предоставит Excel функции модуля, использующие декоратор @xl_func. Затем вернитесь в Excel и на вкладке «Пример PyXLL» нажмите кнопку «Обновить PyXLL», чтобы изменения в файле конфигурации синхронизировались. Затем вы можете вызвать функцию Фибоначчи Python, как и любую другую формулу Excel.

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

Передача данных между Excel и Python

PyXLL поддерживает использование внешних библиотек Python, таких как Pandas. Он позволяет передавать данные из этих библиотек в Python и наоборот. Например, вы можете использовать Pandas для создания случайного фрейма данных и передачи его в Excel. Убедитесь, что Pandas установлен в вашей системе, а затем попробуйте этот код:

 from pyxll import xl_func
import pandas as pd
import numpy as np

@xl_func("int rows, int columns: dataframe<index=True>", auto_resize=True)
def random_dataframe(rows, columns):
   data = np.random.rand(rows, columns)
   column_names = [chr(ord('A') + x) for x in range(columns)]
   return pd.DataFrame(data, columns=column_names)

Вам следует выполнить тот же процесс, чтобы предоставить Excel этот модуль и его функции. Затем попробуйте вызвать функцию random_dataframe так же, как и другую формулу Excel:

 =random_dataframe(10,5) 

Вы можете изменить количество строк и столбцов по своему усмотрению.

Таким же образом вы можете передать предопределенные фреймы данных в Excel. Также можно импортировать данные Excel в скрипт Python с помощью Pandas.

Ограничения PyXLL

  • Совместимость с Windows и Excel: PyXLL в первую очередь разработан для Windows и работает с Microsoft Excel в Windows. Он может иметь ограниченную функциональность или проблемы совместимости на платформах, отличных от Windows, поскольку он оптимизирован для сред Windows.
  • Развертывание. Для развертывания электронных таблиц на базе PyXLL конечным пользователям требуется, чтобы у них был установлен Python с минимальными зависимостями или среда выполнения Python, включенная в электронную таблицу. Это означает, что пользователям, которые хотят использовать электронные таблицы на базе PyXLL, на своих компьютерах должен быть установлен Python.
  • Кривая обучения: эффективное использование PyXLL требует некоторых знаний программирования на Python и знакомства с объектной моделью Excel. Пользователям, которые не знакомы с объектной моделью Python или Excel, возможно, придется потратить время на изучение этих концепций, прежде чем в полной мере использовать возможности PyXLL.
  • Стоимость лицензии: PyXLL — это коммерческий продукт, и в зависимости от вашего использования и требований с его использованием могут возникнуть расходы на лицензирование. Стоимость использования PyXLL зависит от таких факторов, как количество пользователей, масштаб развертывания и лицензионные соглашения.

Стоит ли вам по-прежнему использовать функции Excel?

Это зависит от того, чего вы хотите достичь. Всегда имеет смысл использовать встроенные функции Excel, когда они доступны. Но для более сложных задач, с которыми не могут справиться встроенные функции Excel, PyXLL является отличным решением.

Библиотека Pandas является идеальным дополнением к PyXLL благодаря своим аналитическим возможностям и мощной поддержке обработки данных.