Trabajar con archivos de Excel en Python con openpyxl

En esta entrada veremos cómo trabajar con archivos de Excel utilizando Python y el módulo openpyxl. Este módulo nos permite leer y escribir archivos de Excel con terminación xlsx, xlsm, xltx y xltm. Este módulo se debe instalar para poder utilizarlo.

Instalar el módulo openpyxl

La versión disponible al momento de escribir esta entrada es la 3.0.6. Los ejemplos que aparecen mas adelante son con esta versión. Para hacer la instalación usaremos pip desde una terminal.

pip install openpyxl

Verifiquemos que el módulo se instaló sin inconvenientes, abramos un interprete en modo interactivo e importemos openpyxl.

import openpyxl

Si quieres darte una vuelta por la documentación oficial, aquí te dejo el enlace.

Crear un archivo de Excel con openpyxl

La clase Workbook permite crear un área de trabajo sin que necesariamente se tenga que crear el archivo, se crea en memoria hasta que lo guardamos. Este punto quedará claro un poco más adelante. Para utilizar esta clase, es necesario importarla desde el módulo openpyxl.

from openpyxl import Workbook
libro = Workbook()

Estas líneas crean el objeto libro de tipo Workbook.

Manipular las hojas del archivo de Excel con openpyxl

Al momento de crear un libro, este se crea con una hoja. Para verificarlo utilizamos el atributo sheetname.

 libro.sheetnames

>>> libro.sheetnames
[‘Sheet’]

La hoja inicial por defecto tiene el nombre de “Sheet”, esta también se crea en memoria y no tiene ninguna celda, estas se crean cuando se accede a ellas. Es posible cambiar el nombre de la hoja con la propiedad title, el nombre nos permite acceder a las propiedades de la hoja.

libro[“Sheet”].title = “Hoja”
libro.sheetnames

>>> libro[«Sheet»].title = «Hoja»
>>> libro.sheetnames
[‘Hoja’]

La hoja se puede asignar a una variable para facilitar el trabajo.

hoja = libro[“Hoja”].
hoja.title = “Hoja1”
libro.sheetnames

>>> hoja = libro[«Hoja»]
>>> hoja.title = «Hoja1»
>>> libro.sheetnames
[‘Hoja1’]

Para conocer la hoja seleccionada usamos la propiedad active.

libro.active

>>> libro.active
<Worksheet «Sheet»>

La hoja Sheet esta seleccionada para trabajar sobre ella.

Crear una hoja en un archivo de Excel con openpyxl

El método create_sheet() nos permite crear más hojas, es posible que coloquemos el nombre que queramos asignarle, si lo dejamos vacío tomara por defecto Sheet y si ya existiera una hoja con ese nombre añadiría un consecutivo al nombre.

hoja2 = libro.create_sheet("Hoja2")
libro.create_sheet()
libro.create_sheet()
libro.sheetnames

>>> hoja2 = libro.create_sheet(«Hoja2»)
>>> libro.create_sheet()
<Worksheet «Sheet»>
>>> libro.create_sheet()
<Worksheet «Sheet1″>
>>> libro.sheetnames
[‘Hoja1’, ‘Hoja2’, ‘Sheet’, ‘Sheet1’]

Las líneas anteriores añadieron hojas nuevas después de la hoja disponible en el libro. En el primer caso asignamos un nombre a la nueva hoja, en los siguientes casos se usó el nombre por defecto.

Si quisiéramos insertar una hoja entre las que ya fueron creadas debemos añadir un segundo argumento indicando la posición de la hoja. El conteo empieza en 0 de forma que si quisiéramos insertar una hoja en la segunda posición usaríamos el siguiente código.

hojaX = libro.create_sheet("NuevaX", 1)
libro.sheetnames

>>> hojaX = libro.create_sheet(«NuevaX», 1)
>>> libro.sheetnames
[‘Hoja1’, ‘NuevaX’, ‘Hoja2’, ‘Sheet’, ‘Sheet1’]

Si la hoja la queremos en la penúltima posición usaríamos un -1 en la posición.

hojaZ = libro.create_sheet("Nueva2", -1)
libro.sheetnames

>>> hojaZ = libro.create_sheet(«NuevaZ», -1)
>>> libro.sheetnames
[‘Hoja1’, ‘NuevaX’, ‘Hoja2’, ‘Sheet’, ‘NuevaZ’, ‘Sheet1’]

Manipular celdas con openpyxl

Para acceder a una celda podemos especificar la hoja, la fila y columna. Tambien podemos utilizar mediante el método cell.

hojaX['A4']
hojaX.cell(row = 4, column = 1)

Podemos asignar valores a las celdas de la siguiente forma:

hojaX['A4'] = 5
hojaX.cell(row = 4, column = 0, value = 25)

El valor que contiene a celda lo podemos ver mediante la propiedad values.

hojaX['A4'].value
hojaX.cell(row = 4, column = 0).value

Guardar libro de Excel con openpyxl

El libro lo guardamos usamos el método save y el nombre que queramos asignarle.

libro.save(“ejemplo.xlsx”)

Este método creará el archivo ejemplo.xlsx en la ubicación en que nos encontrábamos al abrir el intérprete en modo interactivo.

Hasta aqui dejaremos esta entrada sobre cómo trabajar con archivos de Excel utilizando Python y el módulo openpyxl. Próximamente tendremos un tutorial para explotar las posibilidades que nos da este módulo. Déjame en los comentarios, ¿qué te ha parecido esta entrada? ¿Utilizas algún otro modulo para trabajar con archivos de Excel?

¡No olvides suscribirte a nuestro boletín!

¡No enviamos spam! Lee más en nuestra política de privacidad