Cuando no hay una función de Excel para el trabajo en cuestión, los programadores de Python recurren a PyXLL.
PyXLL es una herramienta que cierra la brecha entre Microsoft Excel y Python. Le permite integrar perfectamente el código y la funcionalidad de Python en hojas de cálculo de Excel. Con PyXLL, Excel se convierte en una plataforma para aprovechar las bibliotecas y capacidades de Python.
PyXLL sirve como complemento de Excel. Puede usarlo para escribir funciones y macros de Python directamente en el entorno VBA de Excel. Luego, PyXLL actúa como intérprete y ejecuta el código dentro de las celdas de Excel, abriendo muchas posibilidades. Algunos de ellos incluyen la automatización de tareas complejas, el análisis de datos avanzado y la visualización de datos.
Una descripción general de PyXLL
PyXLL funciona ejecutando un intérprete de Python dentro del proceso de Excel. Esto le da a su código Python, que se ejecuta en PyXLL, acceso directo a datos y objetos de Excel. La herramienta está escrita en C++ y utiliza la misma tecnología subyacente que Excel. Esto significa que el código Python que se ejecuta en PyXLL suele ser mucho más rápido que
código excel vba.Instalación y configuración
Para instalar PyXLL, dirígete a la Sitio web de PyXLL y descargue el complemento. Asegúrese de que la versión de Python y la versión de Excel que elija coincidan con las instaladas en su sistema. PyXLL sólo está disponible para la versión de Excel para Windows.
Cuando se complete la descarga, abra un símbolo del sistema y ejecute este comando:
pip install pyxll
Necesitas tener Pip instalado en su sistema para que se ejecute el comando anterior. Luego use el paquete PyXLL para instalar el complemento PyXLL:
pyxll install
El instalador le preguntará si ha descargado el complemento. Ingrese sí y luego proporcione la ruta al archivo zip que contiene el complemento. Luego siga las instrucciones que aparecen en pantalla para completar la instalación.
Comenzando con PyXLL
Una vez que haya instalado el complemento, inicie Excel. Antes de que se inicie, aparecerá un mensaje pidiéndole que Iniciar prueba o Comprar ahora. La versión de prueba caducará después de treinta días y luego deberá comprar una licencia para seguir usando PyXLL.
Clickea en el Iniciar prueba botón. Esto iniciará Excel con el complemento instalado.
Sobre el Pestaña de ejemplo de PyXLL, clickea en el Acerca de PyXLL botón. Esto le mostrará la ruta en la que instaló el complemento, junto con las rutas a los archivos de configuración y de registro.
La ruta que contiene el archivo de configuración es importante ya que necesitará editar ese archivo más adelante, así que anótelo.
Exponer funciones de Python a Excel
Para exponer una función de Python a Excel como una función definida por el usuario (UDF), use el @xl_func decorador. Este decorador le indica a PyXLL que registre la función con Excel y la ponga a disposición de los usuarios.
Por ejemplo, para exponer un Python fibonacci() función a Excel como una UDF, puede utilizar el @xl_func decorador de la siguiente manera:
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)
Guarde este código con una extensión .py y tome nota de la ruta de la carpeta en la que guarda el archivo.
Ahora, abra el archivo de configuración PyXLL en un editor y desplácese hacia abajo hasta una línea que comienza con "pythonpath". Esta configuración suele ser una lista de carpetas en las que PyXLL buscará módulos de Python. Agregue la ruta a la carpeta que contiene el código fuente de la función Fibonacci.
Luego, desplácese hacia abajo hasta "módulos" y agregue su módulo. Por ejemplo, si guardó su archivo como fibonacci.py, añade el nombre"fibonacci"a la lista:
Esto expondrá las funciones del módulo que utilizan el @xl_func decorador a Excel. Luego regrese a Excel y, en el Pestaña de ejemplo de PyXLL, clickea en el Recargar PyXLL para sincronizar los cambios en el archivo de configuración. Luego puedes llamar a Python fibonacci funcionará como lo haría con cualquier otra fórmula de Excel.
Puede crear tantas funciones como necesite y exponerlas a Excel de la misma manera.
Pasar datos entre Excel y Python
PyXLL admite el uso de bibliotecas Python externas, como Pandas. Le permite pasar datos de estas bibliotecas a Python y viceversa. Por ejemplo, puedes usa Pandas para crear un marco de datos aleatorio y pasarlo a Excel. Asegúrese de que Pandas esté instalado en su sistema, luego pruebe este código:
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)
Debes seguir el mismo proceso para exponer este módulo y sus funciones en Excel. Entonces intenta llamar al marco_datos_aleatorio Funciona como lo haría con otra fórmula de Excel:
=random_dataframe(10,5)
Puede cambiar el número de filas y columnas como desee.
Puede pasar sus marcos de datos predefinidos a Excel de la misma manera. También es posible importar datos de Excel al script Python usando Pandas.
Limitaciones de PyXLL
- Compatibilidad con Windows y Excel: PyXLL está diseñado principalmente para Windows y funciona con Microsoft Excel en Windows. Es posible que tenga una funcionalidad limitada o problemas de compatibilidad en plataformas que no sean Windows, ya que está optimizado para entornos Windows.
- Implementación: la implementación de hojas de cálculo basadas en PyXLL para los usuarios finales requiere que tengan Python instalado con dependencias mínimas o el tiempo de ejecución de Python incluido con la hoja de cálculo. Esto significa que los usuarios que quieran utilizar hojas de cálculo basadas en PyXLL deben tener Python instalado en sus máquinas.
- Curva de aprendizaje: el uso eficaz de PyXLL requiere cierto conocimiento de la programación en Python y familiaridad con el modelo de objetos de Excel. Es posible que los usuarios que no estén familiarizados con Python o el modelo de objetos de Excel necesiten invertir tiempo en aprender estos conceptos antes de utilizar plenamente las capacidades de PyXLL.
- Costo de la licencia: PyXLL es un producto comercial y, según su uso y sus requisitos, puede haber costos de licencia asociados con su uso. El costo de usar PyXLL depende de factores como la cantidad de usuarios, la escala de implementación y los acuerdos de licencia.
¿Debería seguir utilizando las funciones de Excel?
Depende de lo que quieras lograr. Siempre tiene sentido utilizar funciones nativas de Excel cuando estén disponibles. Pero, para tareas más complejas que las funciones integradas de Excel no pueden manejar, PyXLL es una excelente solución.
La biblioteca Pandas es un complemento perfecto para PyXLL con sus capacidades analíticas y su sólido soporte para el procesamiento de datos.