Python de Cero a Experto / Ruta scripting
Excel con openpyxl
Excel domina las oficinas del mundo, y automatizar hojas de cálculo es una de las habilidades de scripting
más valiosas en lo laboral: generar reportes, consolidar datos de muchos archivos, rellenar plantillas —sin
horas de trabajo manual—. La librería openpyxl lee y escribe archivos .xlsx desde Python. Hoy aprendes a
automatizar Excel: leer datos de una hoja, escribir resultados, y darles formato.
El asistente que llena planillas
Leer y escribir Excel
Como openpyxl maneja archivos binarios .xlsx con una librería externa, esta lección va con bloques
—pruébalo tras pip install openpyxl—:
from openpyxl import Workbook, load_workbook
# --- CREAR y ESCRIBIR un archivo Excel ---
wb = Workbook() # un libro nuevo
hoja = wb.active # la hoja activa
hoja.title = "Gastos" # nombrarla
# escribir encabezados y datos por celdas
hoja["A1"] = "Nombre"
hoja["B1"] = "Valor"
gastos = [("Mercado", 87500), ("Taxi", 12000), ("Café", 4200)]
for i, (nombre, valor) in enumerate(gastos, start=2): # desde la fila 2
hoja[f"A{i}"] = nombre
hoja[f"B{i}"] = valor
# o agregar filas con append
hoja.append(["Cine", 18000])
# una fórmula de Excel (se calcula al abrir el archivo)
hoja["B6"] = "=SUM(B2:B5)"
wb.save("reporte.xlsx") # guardar el archivo
# --- LEER un archivo Excel existente ---
wb2 = load_workbook("reporte.xlsx")
hoja2 = wb2["Gastos"]
print(hoja2["A1"].value) # 'Nombre'
# recorrer las filas con datos
for fila in hoja2.iter_rows(min_row=2, values_only=True):
nombre, valor = fila[0], fila[1]
if nombre:
print(f"{nombre}: {valor}")Para ESCRIBIR: Workbook() crea un libro, wb.active da la hoja, y escribes por celda (hoja["A1"] = ...)
o agregas filas (hoja.append([...])); wb.save("archivo.xlsx") lo guarda. Puedes incluso poner FÓRMULAS de
Excel ("=SUM(B2:B5)") que Excel calcula al abrir. Para LEER: load_workbook abre un archivo,
hoja.iter_rows(values_only=True) recorre las filas, y .value da el contenido de una celda. Las celdas se
direccionan como en Excel ("A1", "B2") o por fila/columna. Con esto automatizas la lectura y generación
de reportes en el formato que las oficinas usan a diario.
¿Qué permite openpyxl y cuándo usarías pandas en su lugar?
Mini-reto
Diseña (en tu Python instalado) un generador de reportes Excel: 1) crea un Workbook, nombra la hoja
"Reporte", y escribe encabezados Nombre, Valor, Categoría; 2) recorre una lista de gastos
(diccionarios) y agrégalos con append; 3) al final, agrega una fila con una fórmula =SUM(...) del total; 4)
guárdalo con wb.save. Bonus: vuelve a abrirlo con load_workbook y verifica que los datos están, recorriendo
con iter_rows.
Qué sigue
Ya automatizas Excel. La última lección del módulo eleva tus scripts a herramientas profesionales con TYPER —crear interfaces de línea de comandos elegantes y modernas (mejor que argparse)—, para que tus automatizaciones sean fáciles de usar y compartir. El acabado profesional de un script.