Compartir en Twitter
Go to Homepage

CÓMO MANIPULAR ARCHIVOS EXCEL CON PYTHON

October 26, 2025

Introducción a la Manipulación de Archivos Excel y CSV

Python es una herramienta poderosa para trabajar con datos en formatos como CSV y Excel, ampliamente utilizados en aplicaciones empresariales y científicas. Este tutorial detalla cómo usar Python para crear, leer, actualizar y buscar en archivos CSV y Excel, utilizando las librerías estándar csv y openpyxl. A través de ejemplos prácticos, aprenderás a manejar estos formatos, desde la creación de archivos CSV hasta la búsqueda de datos específicos en hojas de cálculo Excel. Este contenido está diseñado para programadores y profesionales interesados en automatizar tareas de procesamiento de datos.

Trabajando con Archivos CSV

Los archivos CSV (valores separados por comas) son un formato simple para almacenar datos tabulares. Aunque no permiten guardar fórmulas, celdas especiales o múltiples hojas como los archivos Excel, son compatibles con programas como Microsoft Excel, Google Spreadsheets y LibreOffice Calc. Su estructura ligera los hace ideales para tareas de procesamiento de datos. En esta sección, exploraremos cómo crear, leer y actualizar archivos CSV usando el módulo csv de Python.

Crear Archivos CSV

Para comenzar, el módulo csv de Python proporciona métodos como csv.writer y csv.DictWriter para escribir datos en un archivo CSV. El proceso implica definir un nombre de archivo, un encabezado y los datos a escribir. A continuación, se muestra un ejemplo práctico que crea un archivo CSV con información de películas.

import csv

filename = "imdb_top_4.csv"
header = ("Rank", "Rating", "Title")
data = [
    (1, 9.2, "The Shawshank Redemption (1994)"),
    (2, 9.2, "The Godfather (1972)"),
    (3, 9.0, "The Godfather: Part II (1974)"),
    (4, 8.9, "Pulp Fiction (1994)")
]

def writer(header, data, filename):
    with open(filename, "w", newline="") as csvfile:
        movies = csv.writer(csvfile)
        movies.writerow(header)
        for row in data:
            movies.writerow(row)

writer(header, data, filename)

Este código genera un archivo imdb_top_4.csv con un encabezado y cuatro filas de datos. Al abrirlo en una aplicación de hojas de cálculo, verás una tabla con las columnas “Rank”, “Rating” y “Title”. La opción newline="" asegura compatibilidad en diferentes sistemas operativos al manejar los saltos de línea.

Actualizar Archivos CSV

Actualizar un archivo CSV implica leer su contenido, modificarlo y reescribirlo. El método csv.DictReader es útil porque lee cada fila como un diccionario, facilitando el acceso a los datos por nombre de columna. A continuación, se muestra cómo actualizar la calificación de la primera película.

import csv

def updater(filename):
    with open(filename, newline="") as file:
        readData = [row for row in csv.DictReader(file)]
        readData[0]["Rating"] = "9.4"

    readHeader = readData[0].keys()
    writer(readHeader, readData, filename, "update")

def writer(header, data, filename, option):
    with open(filename, "w", newline="") as csvfile:
        if option == "write":
            movies = csv.writer(csvfile)
            movies.writerow(header)
            for row in data:
                movies.writerow(row)
        elif option == "update":
            writer = csv.DictWriter(csvfile, fieldnames=header)
            writer.writeheader()
            writer.writerows(data)
        else:
            print("Opción no reconocida")

filename = "imdb_top_4.csv"
writer(header, data, filename, "write")
updater(filename)

En este ejemplo, la función updater lee el archivo CSV, cambia el valor de la columna “Rating” de la primera fila a 9.4 y reescribe el archivo usando la función writer con la opción “update”. El uso de DictWriter asegura que los datos se escriban correctamente con los encabezados correspondientes. Este enfoque es eficiente para modificar datos específicos en archivos CSV sin necesidad de reestructurar todo el archivo.

Manipulación de Archivos Excel con Openpyxl

Los archivos Excel (.xlsx) ofrecen mayor flexibilidad que los CSV, permitiendo múltiples hojas, celdas con fórmulas y formatos avanzados. La librería openpyxl es una solución completa para trabajar con estos archivos en Python, permitiendo leer, escribir, actualizar y buscar datos. En esta sección, aprenderás a manejar archivos Excel de manera dinámica, desde cargar libros de trabajo hasta buscar valores específicos.

Instalación y Conceptos Básicos de Openpyxl

Para usar openpyxl, primero debes instalarlo mediante pip:

pip install openpyxl

En openpyxl, un archivo Excel se denomina libro de trabajo (workbook), que contiene una o más hojas (sheets). Cada hoja está formada por filas (numeradas desde 1) y columnas (identificadas por letras desde A). Las celdas, ubicadas en la intersección de filas y columnas, pueden contener datos numéricos, de texto o fórmulas. A continuación, se muestra cómo cargar un libro de trabajo y acceder a una celda específica.

import openpyxl

theFile = openpyxl.load_workbook("Customers1.xlsx")
print(theFile.sheetnames)
currentSheet = theFile["customers 1"]
print(currentSheet["B4"].value)

Este código carga el archivo Customers1.xlsx, imprime los nombres de todas las hojas y accede al valor de la celda B4 en la hoja “customers 1”. Sin embargo, este enfoque es estático, ya que asume una celda específica. Para hacerlo más dinámico, exploraremos cómo recorrer todas las hojas y celdas.

Recorrer Hojas y Celdas Dinámicamente

Para procesar datos en un archivo Excel de manera más flexible, puedes recorrer todas las hojas y sus celdas. El siguiente código imprime los valores de la celda B4 en cada hoja del libro de trabajo.

import openpyxl

theFile = openpyxl.load_workbook("Customers1.xlsx")
allSheetNames = theFile.sheetnames

print("Nombres de todas las hojas: {}".format(theFile.sheetnames))

for sheet in allSheetNames:
    print("Nombre de la hoja actual: {}".format(sheet))
    currentSheet = theFile[sheet]
    print(currentSheet["B4"].value)

Este código es un paso hacia la automatización, pero aún depende de una celda fija (B4). Para buscar datos específicos, como una columna llamada “telephone”, necesitas recorrer todas las celdas de una hoja. A continuación, se muestra cómo hacerlo.

Buscar Valores Específicos en Excel

Supongamos que necesitas encontrar la columna con el encabezado “telephone” y listar todos los valores de esa columna. El siguiente código implementa esta funcionalidad recorriendo celdas dinámicamente.

import openpyxl

theFile = openpyxl.load_workbook("Customers1.xlsx")
allSheetNames = theFile.sheetnames

print("Nombres de todas las hojas: {}".format(theFile.sheetnames))

def find_specific_cell():
    for row in range(1, currentSheet.max_row + 1):
        for column in "ABCDEFGHIJKL":
            cell_name = "{}{}".format(column, row)
            if currentSheet[cell_name].value == "telephone":
                print("La celda {} contiene el valor {}".format(cell_name, currentSheet[cell_name].value))
                return cell_name

def get_column_letter(specificCellLetter):
    letter = specificCellLetter[0:-1]
    return letter

def get_all_values_by_cell_letter(letter):
    for row in range(1, currentSheet.max_row + 1):
        cell_name = "{}{}".format(letter, row)
        print("La celda {} tiene el valor {}".format(cell_name, currentSheet[cell_name].value))

for sheet in allSheetNames:
    print("Nombre de la hoja actual: {}".format(sheet))
    currentSheet = theFile[sheet]
    specificCellLetter = find_specific_cell()
    if specificCellLetter:
        letter = get_column_letter(specificCellLetter)
        get_all_values_by_cell_letter(letter)

Este código define tres funciones: find_specific_cell busca la celda que contiene “telephone”, get_column_letter extrae la letra de la columna y get_all_values_by_cell_letter imprime todos los valores de esa columna. El bucle principal recorre todas las hojas, busca la celda objetivo y lista los valores de la columna correspondiente. Este enfoque es útil para buscar datos específicos en archivos Excel grandes.

Actualizar Celdas en Archivos Excel

Además de leer y buscar, puedes actualizar celdas específicas en un archivo Excel. Por ejemplo, para cambiar el valor de una celda en la columna “telephone”, puedes modificar el código anterior para asignar un nuevo valor y guardar los cambios.

import openpyxl

theFile = openpyxl.load_workbook("Customers1.xlsx")
currentSheet = theFile["customers 1"]
currentSheet["B4"].value = "123-456-7890"
theFile.save("Customers1_updated.xlsx")

En este ejemplo, se actualiza la celda B4 con un nuevo número de teléfono y se guarda el archivo con un nombre diferente para evitar sobrescribir el original. Este método es ideal para actualizar celdas específicas sin alterar el resto del archivo.

Aplicaciones Prácticas

La manipulación de archivos CSV y Excel con Python tiene aplicaciones en múltiples escenarios, como la limpieza de datos, la estandarización de formatos y la generación de informes automatizados. Por ejemplo, podrías usar estas técnicas para estandarizar números de teléfono en un archivo Excel, como se muestra en el siguiente código.

import openpyxl
import re

def standardize_phone(phone):
    # Elimina caracteres no numéricos y estandariza al formato +46XXXXXXXXX
    digits = re.sub(r"\D", "", phone)
    if len(digits) == 10 and digits.startswith("0"):
        return "+46" + digits[1:]
    return phone

theFile = openpyxl.load_workbook("Customers1.xlsx")
currentSheet = theFile["customers 1"]

for row in range(2, currentSheet.max_row + 1):
    cell_name = "B{}".format(row)
    phone = currentSheet[cell_name].value
    if phone:
        currentSheet[cell_name].value = standardize_phone(phone)

theFile.save("Customers1_standardized.xlsx")

Este código recorre la columna B, estandariza los números de teléfono al formato sueco (+46XXXXXXXXX) y guarda los cambios en un nuevo archivo. La función standardize_phone usa expresiones regulares para limpiar los datos, demostrando cómo Python puede procesar datos complejos en archivos Excel.

Conclusiones

La manipulación de archivos CSV y Excel con Python, utilizando las librerías csv y openpyxl, permite automatizar tareas repetitivas de procesamiento de datos de manera eficiente. Desde la creación y actualización de archivos CSV hasta la búsqueda y modificación de datos en hojas de cálculo Excel, estas herramientas ofrecen flexibilidad y potencia para proyectos de datos. Los ejemplos presentados muestran cómo leer, escribir y buscar datos dinámicamente, lo que es esencial para aplicaciones como la limpieza de datos y la generación de informes. Al dominar estas técnicas, los programadores pueden optimizar flujos de trabajo y manejar grandes volúmenes de datos con facilidad.