Xlwings es una librería diseñada para el análisis de información avanzado a base del lenguaje de programación Python y, por supuesto, compatible con Excel.
Para usar esta herramienta es necesario que tengas algún programa compatible con Python, como Anaconda, el cual es gratis y puedes descargar aquí.
La mayor ventaja que ofrece Anaconda sobre cualquier otro traductor de Python es su vasta selección de herramientas que vienen precargadas. Aquí usaremos la aplicación Spyder para interpretar xlwings.
1. Preparando Anaconda y xlwings
Una vez tengas Anaconda instalado, lo primero será abrir «Anaconda Prompt» para desccargar xlwings. Al abrir Prompt se abrirá una pantalla negra de comandos, sobre la cual debemos escribir lo siguiente:
pip install xlwings
Luego damos a Enter y esperar a que termine de instalarse.
Adicionalmente, es posible realizar instalaciones desde el forge (versión de desarrolladores) para tener la versión más actualizada. Una vez más desde Anaconda Prompt introduce lo siguiente:
-c conda-forge xlwings
Enter y esperar a que termine la instalación.
2. Vinculando con Excel
Con eso listo, vamos a crear un script que usaremos para vincular con nuestro libro de Excel.
Primero iremos a Spyder y abriremos un nuevo espacio de trabajo, después importaremos la librería de trabajo xlwings.
import xlwings as xw
Dependiendo del tipo de archivo que sea nuestro libro a vincular y la información que queramos usar se tendrá que utilizar formas distintas. Debajo de la línea import xlwings as xw que introducimos anteriormente habrá que introducir alguno de los siguientes comandos:
Si aun no hay archivo y queremos crear un libro nuevo:
wb = xw.Book()
Si se trata de un libro ya abierto pero sin guardar:
wb = xw.Book('Book1') #(Siendo 'Book1' el nombre del libro de Excel con que estemos trabajando)
Con un libro ya guardado en nuestros archivos:
wb= xw.Book('C:/usuarios/nombredeusuario/carpeta/archivo.xlsx') #(Siendo el paréntesis la ruta del archivo y conservando los apóstrofes ['])
Para manipular solo hojas específicas podemos declarar en una nueva variable llamada «sht» lo siguiente:
Si queremos escoger la hoja 1:
sht = wb.sheets(1) #(Aplicable a cualquier página del libro cambiando el número correspondiente)
Si queremos escoger una hoja por su nombre:
sht = wb.sheets('Sheets1') #(Siendo el paréntesis el nombre de la hoja y conservando los apóstrofes ['])
Con esto hecho, podremos depositar valores en una hoja de cálculo o tomar datos de la misma y trabajar con ellos usando lenguaje Python. Esto lo haremos en Spyder de la siguiente forma:
Si queremos depositar datos en la hoja de cálculo:
sht.range('A1').value = 10
Si queremos tomar valores de una hoja de cálculo a Spyder.
data = sht.range('A1:B10').value
Un código básico simple en Spyder se vería algo así:
import xlwings as xw
wb = xw.Book()
sht = wb.sheets(1)
sht.range('A1').value = 10
3. Add-in y otras caracteristicas
Con lo anterior ya listo será posible empezar a utilizar código en lenguaje Python para manejar la información del libro en Excel. Las ventajas de esto es poder tener acceso a las miles de librerías que ofrece Python para análisis avanzado y machine learning.
Una de las mejoras recientes de xlwings es el Add-in, desarrollado para manipular funciones y utilizar distintos tipos de archivos Python sobre un mismo archivo de Excel. Puedes descargarlo desde este enlace.
Esta es una adición increíble para Excel. Aquí abajo tienes un pequeño código de ejemplo. Solo copia el bloque de abajo y pégalo en Spyder para que lo pruebes por tu cuenta y veas su funcionamiento en vivo y a todo color:
import xlwings as xw import pandas as pd import matplotlib.pyplot as plt wb = xw.Book() sht = wb.Sheets(‘Sheet1’) df = pd.DataFrame([[1,2],[3,4]], columns=[‘a’,’b’]) sht.range(‘A1’).value = df fig = plt.figure() plt.plot([1,2,3,4,5]) sht.pictures.add(fig, name=’Myplot’, update=True)
Si quieres empezar a conocer mas de Python puedes revisar mis notas de introducción aqui.
Nos leemos abajo.