Poner bordes a una celda con Python y openpyxl

En esta entrada veremos cómo poner bordes a una celda con Python usando el modulo openpyxl. Es necesario instalar este módulo para poder utilizarlo. En la entrada Trabajar con archivos de Excel en Python con openpyxl puedes ver cómo hacer la instalación del módulo y una introducción a lo que se puede hacer con él.

Podemos colocar los bordes de una celda con un apartado del modulo opepyxl llamado styles, este contiene submódulos que nos van a permitir definir los colores y bordes de las celdas. Empecemos importando los módulos necesarios.

from openpyxl import Workbook
from openpyxl.styles import Border, Side

Ahora vamos a crear libro con el que vamos a trabajar y seleccionamos una celda a la que le colocaremos algún borde.

libro = Workbook()
hoja = libro.active
celda = hoja["B2"]

Side nos permite definir el tipo de línea que usaremos y su color. Border permite seleccionar el lado de la celda en el que queremos aplicar el borde. Vamos a colocar un borde a la parte superior en color rojo. El color se puede definir de forma aRGB.

celda.border = Border(top = Side(border_style='dashDot', color='00FF0000'))

Vamos a guardar el libro para poder ver el borde que acabamos de crear en la celda. Recuerda que si no especificas la ruta donde deseas guardar el libro entonces se creará en la ruta en la que te encontrabas cuando abriste el interprete.

libro.save('demo.xlsx')

Busca el archivo y ábrelo, veras que en la parte de arriba de la celda B2 tendremos un borde rojo.

Poner bordes a una celda con Python y openpyxl - Celda con borde rojo
Celda con borde rojo

Lo que hicimos en las líneas anteriores fue asignar directamente el formato de borde a la celda, pero podemos referenciar ese formato con una variable para poder utilizarlo con facilidad en otras celdas. Recuerda cerrar el archivo de Excel para que podamos seguir trabajando con el sin que se genere algun error.

borde1 = Border(top = Side(border_style='mediumDashed', color='0000FF00'))
celda2 = hoja["D2"]
celda2.border = borde1
libro.save('demo.xlsx')

Vuelve a abrir el archivo y veras el segundo tipo de borde en la celda D2.

Poner bordes a una celda con Python y openpyxl - Borde rojo y verde en celdas
Borde rojo y verde en celdas

Los tipos de línea que podemos utilizar son los siguientes: hair, dashDotDot, dashDot, thin, mediumDashed, slantDashDot, dotted, dashed, medium, thick, mediumDashDot, double y mediumDashDotDot. Corre las siguientes lineas para ver cada uno de ellos.

bordesDisponibles = ['hair', 'dashDotDot', 'dashDot', 'thin', 'mediumDashed', 'slantDashDot', 'dotted', 'dashed', 'medium', 'thick', 'mediumDashDot', 'double', 'mediumDashDotDot']

for elem in range(len(bordesDisponibles)):
    hoja.cell(row = elem + 5, column = 5).value = bordesDisponibles[elem]
    hoja.cell(row = elem + 5, column = 5).border = Border(top = Side(border_style=bordesDisponibles[elem], color='00FF0000'))

Vuelve a abrir el archivo y verás sobre cada tipo de linea la representacion en color rojo.

Poner bordes a una celda con Python y openpyxl - Tipos de líneas
Tipos de líneas

Solo nos falta ver las posiciones en las que podemos colocar el borde. Las opciones disponibles son: left, right, top, bottom y diagonal (puede ser hacia arriba o abajo). Para ver las opciones disponibles usa las siguientes líneas.

hoja.cell(row = 7, column = 7).value = 'left'
hoja.cell(row = 7, column = 7).border = Border(left = Side(border_style='thick', color='00FF0000'))
hoja.cell(row = 9, column = 7).value = 'right'
hoja.cell(row = 9, column = 7).border = Border(right = Side(border_style='thick', color='00FF0000'))
hoja.cell(row = 11, column = 7).value = 'top'
hoja.cell(row = 11, column = 7).border = Border(top = Side(border_style='thick', color='00FF0000'))
hoja.cell(row = 13, column = 7).value = 'bottom'
hoja.cell(row = 13, column = 7).border = Border(bottom = Side(border_style='thick', color='00FF0000'))
hoja.cell(row = 15, column = 7).value = 'diagonalUp'
hoja.cell(row = 15, column = 7).border = Border(diagonal = Side(border_style='thick', color='00FF0000'), diagonalUp=1)
hoja.cell(row = 17, column = 7).value = 'diagonalDown'
hoja.cell(row = 17, column = 7).border = Border(diagonal = Side(border_style='thick', color='00FF0000'), diagonalDown=1)

Abre el archivo nuevamente para ver el resultado.

Poner bordes a una celda con Python y openpyxl - Bordes disponibles
Bordes disponibles

Hasta aquí esta entrada sobre cómo poner bordes a una celda con Python usando el modulo openpyxl. Cuéntame, ¿te ha parecido útil esta entrada?

¡No olvides suscribirte a nuestro boletín!

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

Deja un comentario