Когда под рукой нет функции Excel, программисты Python обращаются к PyXLL.
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.
Установка и настройка
Чтобы установить 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 Фибоначчи() в Excel как UDF, вы можете использовать @xl_func декоратор следующим образом:
from pyxll import xl_func
@xl_func
deffibonacci(n):
This is a Python function that calculates the Fibonacci sequence.
if n < 0:
raise ValueError("n must be non-negative")
elif n == 0or n == 1:
return n
else:
return fibonacci(n - 1) + fibonacci(n - 2)
Сохраните этот код с расширением .py и запишите путь к папке, в которой вы сохраняете файл.
Теперь откройте файл конфигурации PyXLL в редакторе и прокрутите вниз до строки, начинающейся с «pythonpath». Обычно этот параметр представляет собой список папок, в которых PyXLL будет искать модули Python. Добавьте путь к папке, содержащей исходный код функции Фибоначчи.
Затем прокрутите вниз до «модулей» и добавьте свой модуль. Например, если вы сохранили файл как fibonacci.py, добавьте в список имя «фибоначчи»:
Это откроет функции модуля, которые используют @xl_func декоратор в Excel. Затем вернитесь в 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
", auto_resize=True)
defrandom_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 этот модуль и его функции. Затем попробуйте позвонить в случайный_кадр данных функционируйте так же, как и другая формула 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 благодаря своим аналитическим возможностям и мощной поддержке обработки данных.