Crear archivos de Excel en Python: desde lo básico hasta la automatización

2025-12-26 03:59:36 zaki zou

Crear archivo de Excel en Python usando código

Crear archivos de Excel en Python es un requisito común en aplicaciones basadas en datos. Cuando los datos de la aplicación deben entregarse en un formato que los usuarios de negocio puedan revisar y compartir fácilmente, Excel sigue siendo una de las opciones más prácticas y ampliamente aceptadas.

En proyectos reales, generar un archivo de Excel con Python es a menudo el punto de partida de un proceso automatizado. Los datos pueden provenir de bases de datos, API o servicios internos, y Python es responsable de convertir esos datos en un archivo de Excel estructurado que sigue un diseño y una convención de nomenclatura consistentes.

Este artículo muestra cómo crear archivos de Excel en Python, desde generar un libro de trabajo desde cero, hasta escribir datos, aplicar formato básico y actualizar archivos existentes cuando sea necesario. Todos los ejemplos se presentan desde una perspectiva práctica, centrándose en cómo se crean y utilizan los archivos de Excel en escenarios de automatización reales.

Tabla de Contenidos


1. Escenarios Típicos para Crear Archivos de Excel con Python

La creación de archivos de Excel con Python generalmente ocurre como parte de un sistema más grande en lugar de una tarea independiente. Los escenarios comunes incluyen:

  • Generar informes de negocio diarios, semanales o mensuales
  • Exportar resultados de consultas de bases de datos para análisis o auditoría
  • Producir archivos de Excel desde servicios de backend o trabajos por lotes
  • Automatizar el intercambio de datos entre sistemas internos o socios externos

En estas situaciones, Python se utiliza a menudo para generar archivos de Excel automáticamente, ayudando a los equipos a reducir el esfuerzo manual al tiempo que se garantiza la consistencia y repetibilidad de los datos.


2. Configuración del Entorno: Preparación para Crear Archivos de Excel en Python

En este tutorial, utilizamos Free Spire.XLS for Python para demostrar las operaciones con archivos de Excel. Antes de generar archivos de Excel con Python, asegúrese de que el entorno de desarrollo esté listo.

Versión de Python

Cualquier versión moderna de Python 3.x es suficiente para las tareas de automatización de Excel.

Free Spire.XLS for Python se puede instalar a través de pip:

pip install spire.xls.free

También puede descargar Free Spire.XLS for Python e incluirlo en su proyecto manualmente.

La biblioteca funciona independientemente de Microsoft Excel, lo que la hace adecuada para entornos de servidor, trabajos programados y flujos de trabajo automatizados donde Excel no está instalado.


3. Crear un Nuevo Archivo de Excel desde Cero en Python

Esta sección se centra en la creación de un archivo de Excel desde cero utilizando Python. El objetivo es definir una estructura básica de libro de trabajo, incluyendo hojas de cálculo y filas de encabezado, antes de que se escriban datos.

Al generar el diseño inicial de forma programática, puede asegurarse de que todos los archivos de salida compartan la misma estructura y estén listos para la posterior población de datos.

Ejemplo: Crear una Plantilla de Excel en Blanco

from spire.xls import Workbook, FileFormat

# Initialize a new workbook
workbook = Workbook()

# Access the default worksheet
sheet = workbook.Worksheets[0]
sheet.Name = "Template"

# Add a placeholder title
sheet.Range["B2"].Text = "Monthly Report Template"

# Save the Excel file
workbook.SaveToFile("template.xlsx", FileFormat.Version2016)
workbook.Dispose()

La vista previa del archivo de plantilla:

Crear una Plantilla de Excel en Blanco Usando Python

En este ejemplo:

  • Workbook() crea un nuevo libro de trabajo de Excel que ya contiene tres hojas de cálculo predeterminadas.
  • Se accede a la primera hoja de cálculo a través de Worksheets[0] y se le cambia el nombre para definir la estructura básica.
  • La propiedad Range[].Text escribe texto en una celda específica, lo que le permite establecer títulos o marcadores de posición antes de agregar datos reales.
  • El método SaveToFile() guarda el libro de trabajo en un archivo de Excel. Y FileFormat.Version2016 especifica la versión o el formato de Excel a utilizar.

Crear Archivos de Excel con Múltiples Hojas de Cálculo en Python

En la generación de Excel basada en Python, un solo libro de trabajo puede contener múltiples hojas de cálculo para organizar lógicamente los datos relacionados. Cada hoja de cálculo puede almacenar un conjunto de datos, un resumen o un resultado de procesamiento diferente dentro del mismo archivo.

El siguiente ejemplo muestra cómo crear un archivo de Excel con múltiples hojas de cálculo y escribir datos en cada una.

from spire.xls import Workbook, FileFormat

workbook = Workbook()

# Default worksheet
data_sheet = workbook.Worksheets[0]
data_sheet.Name = "Raw Data"

# Remove the second default worksheet
workbook.Worksheets.RemoveAt(1)

# Add a summary worksheet
summary_sheet = workbook.Worksheets.Add("Summary")

summary_sheet.Range["A1"].Text = "Summary Report"

workbook.SaveToFile("multi_sheet_report.xlsx", FileFormat.Version2016)
workbook.Dispose()

Este patrón se combina comúnmente con flujos de trabajo de lectura/escritura, donde los datos sin procesar se importan en una hoja de cálculo y los resultados procesados se escriben en otra.

Formatos de Archivo de Excel en la Automatización de Python

Al crear archivos de Excel de forma programática en Python, XLSX es el formato más utilizado y es totalmente compatible con las versiones modernas de Microsoft Excel. Admite hojas de cálculo, fórmulas, estilos y es adecuado para la mayoría de los escenarios de automatización.

Además de XLSX, Spire.XLS for Python admite la generación de varios formatos comunes de Excel, que incluyen:

  • XLSX – el formato predeterminado para la automatización moderna de Excel
  • XLS – formato de Excel heredado para compatibilidad con sistemas más antiguos
  • CSV – formato de texto sin formato que se utiliza a menudo para el intercambio e importación de datos

En este artículo, todos los ejemplos utilizan el formato XLSX, que se recomienda para la generación de informes, exportaciones de datos estructurados y archivos de Excel basados en plantillas. Puede consultar la enumeración FileFormat para obtener una lista completa de los formatos admitidos.


4. Escribir Datos Estructurados en un Archivo XLSX Usando Python

En aplicaciones reales, los datos escritos en Excel rara vez provienen de listas codificadas. Es más común que se generen a partir de consultas de bases de datos, respuestas de API o resultados de procesamiento intermedios.

Un patrón típico es tratar a Excel como el formato de entrega final para datos ya estructurados.

Ejemplo de Python: Generar un Informe de Ventas Mensual a partir de Datos de la Aplicación

Suponga que su aplicación ya ha producido una lista de registros de ventas, donde cada registro contiene información del producto y totales calculados. En este ejemplo, los datos de ventas se representan como una lista de diccionarios, simulando registros devueltos desde una aplicación o capa de servicio.

from spire.xls import Workbook

workbook = Workbook()
sheet = workbook.Worksheets[0]
sheet.Name = "Sales Report"

headers = ["Product", "Quantity", "Unit Price", "Total Amount"]
for col, header in enumerate(headers, start=1):
    sheet.Range[1, col].Text = header

# Data typically comes from a database or service layer
sales_data = [
    {"product": "Laptop", "qty": 15, "price": 1200},
    {"product": "Monitor", "qty": 30, "price": 250},
    {"product": "Keyboard", "qty": 50, "price": 40},
    {"product": "Mouse", "qty": 80, "price": 20},
    {"product": "Headset", "qty": 100, "price": 10}
]

row = 2
for item in sales_data:
    sheet.Range[row, 1].Text = item["product"]
    sheet.Range[row, 2].NumberValue = item["qty"]
    sheet.Range[row, 3].NumberValue = item["price"]
    sheet.Range[row, 4].NumberValue = item["qty"] * item["price"]
    row += 1

workbook.SaveToFile("monthly_sales_report.xlsx")
workbook.Dispose()

La vista previa del informe de ventas mensual:

Generar un Informe de Ventas Mensual a partir de Datos de la Aplicación Usando Python

En este ejemplo, los valores de texto como los nombres de los productos se escriben utilizando la propiedad CellRange.Text, mientras que los campos numéricos utilizan CellRange.NumberValue. Esto asegura que las cantidades y los precios se almacenen como números en Excel, lo que permite un cálculo, ordenación y formato adecuados.

Este enfoque escala de forma natural a medida que crece el conjunto de datos y mantiene la lógica de negocio separada de la lógica de salida de Excel. Para obtener más ejemplos de escritura en Excel, consulte Cómo Automatizar la Escritura en Excel en Python.


5. Formatear Datos de Excel para Informes del Mundo Real en Python

En los informes del mundo real, los archivos de Excel a menudo se entregan directamente a las partes interesadas. Los datos sin formato pueden ser difíciles de leer o interpretar.

Las tareas de formato comunes incluyen:

  • Hacer que las filas de encabezado sean visualmente distintas
  • Aplicar colores de fondo o bordes
  • Formatear números y monedas
  • Ajustar automáticamente el ancho de las columnas

El siguiente ejemplo demuestra cómo se pueden aplicar estas operaciones de formato comunes para mejorar la legibilidad general de un informe de Excel generado.

Ejemplo de Python: Mejorar la Legibilidad de los Informes de Excel

from spire.xls import Workbook, Color, LineStyleType

# Load the created Excel file
workbook = Workbook()
workbook.LoadFromFile("monthly_sales_report.xlsx")

# Get the first worksheet
sheet = workbook.Worksheets[0]

# Format header row
header_range = sheet.Range.Rows[0] # Get the first used row
header_range.Style.Font.IsBold = True
header_range.Style.Color = Color.get_LightBlue()

# Apply currency format
sheet.Range["C2:D6"].NumberFormat = "$#,##0.00"

# Format data rows
for i in range(1, sheet.Range.Rows.Count):
    if i % 2 == 0:
        row_range = sheet.Range[i, 1, i, sheet.Range.Columns.Count]
        row_range.Style.Color = Color.get_LightGreen()
    else:
        row_range = sheet.Range[i, 1, i, sheet.Range.Columns.Count]
        row_range.Style.Color = Color.get_LightYellow()

# Add borders to data rows
sheet.Range["A2:D6"].BorderAround(LineStyleType.Medium, Color.get_LightBlue())

# Auto-fit column widths
sheet.AllocatedRange.AutoFitColumns()

# Save the formatted Excel file
workbook.SaveToFile("monthly_sales_report_formatted.xlsx")
workbook.Dispose()

La vista previa del informe de ventas mensual formateado:

Mejorar la Legibilidad de los Informes de Excel Usando Python

Si bien el formato no es estrictamente necesario para la corrección de los datos, a menudo se espera en los informes de negocio que se comparten o archivan. Consulte Cómo Formatear Hojas de Cálculo de Excel con Python para obtener técnicas de formato más avanzadas.


6. Leer y Actualizar Archivos de Excel Existentes en la Automatización de Python

Actualizar un archivo de Excel existente generalmente implica localizar la fila correcta antes de escribir nuevos valores. En lugar de actualizar una celda fija, los scripts de automatización a menudo escanean filas para encontrar registros coincidentes y aplican actualizaciones condicionalmente.

Ejemplo de Python: Actualizar un Archivo de Excel

from spire.xls import Workbook

workbook = Workbook()
workbook.LoadFromFile("monthly_sales_report.xlsx")
sheet = workbook.Worksheets[0]

# Locate the target row by product name
for row in range(2, sheet.LastRow + 1):
    product_name = sheet.Range[row, 1].Text
    if product_name == "Laptop":
        sheet.Range[row, 5].Text = "Reviewed"
        break

sheet.Range["E1"].Text = "Status"

workbook.SaveToFile("monthly_sales_report_updated.xlsx")
workbook.Dispose()

La vista previa del informe de ventas mensual actualizado:

Actualizar Hoja de Cálculo de Excel Usando Python


7. Combinar Operaciones de Lectura y Escritura en un Único Flujo de Trabajo

Al trabajar con archivos de Excel importados, los datos sin procesar a menudo no son inmediatamente adecuados para informes o análisis posteriores. Los problemas comunes incluyen registros duplicados, valores inconsistentes o filas incompletas.

Esta sección demuestra cómo leer datos de Excel existentes, normalizarlos y escribir el resultado procesado en un nuevo archivo usando Python.

En los sistemas de automatización del mundo real, los archivos de Excel se utilizan a menudo como portadores de datos intermedios en lugar de entregables finales.
Pueden importarse desde plataformas externas, ser editados manualmente por diferentes equipos o generados por sistemas heredados antes de ser procesados posteriormente.

Como resultado, los datos de Excel sin procesar con frecuencia contienen problemas como:

  • Múltiples filas para la misma entidad de negocio
  • Valores inconsistentes o no numéricos
  • Registros vacíos o incompletos
  • Estructuras de datos que no son adecuadas para informes o análisis

Un requisito común es leer datos de Excel sin refinar, aplicar reglas de normalización en Python y escribir los resultados limpios en una nueva hoja de cálculo en la que los usuarios posteriores puedan confiar.

Ejemplo de Python: Normalizar y Agregar Datos de Ventas Importados

En este ejemplo, un archivo de Excel de ventas sin procesar contiene múltiples filas por producto.
El objetivo es generar una hoja de resumen limpia donde cada producto aparece solo una vez, con el monto total de sus ventas calculado programáticamente.

from spire.xls import Workbook, Color

workbook = Workbook()
workbook.LoadFromFile("raw_sales_data.xlsx")

source = workbook.Worksheets[0]
summary = workbook.Worksheets.Add("Summary")

# Define headers for the normalized output
summary.Range["A1"].Text = "Product"
summary.Range["B1"].Text = "Total Sales"

product_totals = {}

# Read raw data and aggregate values by product
for row in range(2, source.LastRow + 1):
    product = source.Range[row, 1].Text
    value = source.Range[row, 4].Value

    # Skip incomplete or invalid rows
    if not product or value is None:
        continue

    try:
        amount = float(value)
    except ValueError:
        continue

    if product not in product_totals:
        product_totals[product] = 0

    product_totals[product] += amount

# Write aggregated results to the summary worksheet
target_row = 2
for product, total in product_totals.items():
    summary.Range[target_row, 1].Text = product
    summary.Range[target_row, 2].NumberValue = total
    target_row += 1
# Create a total row
summary.Range[summary.LastRow, 1].Text = "Total"
summary.Range[summary.LastRow, 2].Formula = "=SUM(B2:B" + str(summary.LastRow - 1) + ")"

# Format the summary worksheet
summary.Range.Style.Font.FontName = "Arial"
summary.Range[1, 1, 1, summary.LastColumn].Style.Font.Size = 12
summary.Range[1, 1, 1, summary.LastColumn].Style.Font.IsBold = True
for row in range(2, summary.LastRow + 1):
    for column in range(1, summary.LastColumn + 1):
        summary.Range[row, column].Style.Font.Size = 10
summary.Range[summary.LastRow, 1, summary.LastRow, summary.LastColumn].Style.Color = Color.get_LightGray()
summary.Range.AutoFitColumns()

workbook.SaveToFile("normalized_sales_summary.xlsx")
workbook.Dispose()

La vista previa del resumen de ventas normalizado:

Normalizar y Agregar Datos de Excel Usando Python

Python maneja la validación de datos, la agregación y la lógica de normalización, mientras que Excel sigue siendo el formato de entrega final para los usuarios de negocio, eliminando la necesidad de limpieza manual o fórmulas complejas de hoja de cálculo.


Elegir el Enfoque de Python Correcto para la Creación de Archivos de Excel

Python ofrece múltiples formas de crear archivos de Excel, y el mejor enfoque depende de cómo se utiliza Excel en su flujo de trabajo.

Free Spire.XLS for Python es particularmente adecuado para escenarios donde:

  • Los archivos de Excel se generan o actualizan sin tener Microsoft Excel instalado
  • Los archivos son producidos por servicios de backend, trabajos por lotes o tareas programadas
  • Necesita un control preciso sobre la estructura de la hoja de cálculo, el formato y las fórmulas
  • Excel se utiliza como un formato de entrega o intercambio, no como una herramienta de análisis interactivo

Para la exploración de datos o el análisis estadístico, los usuarios de Python pueden depender de otras bibliotecas aguas arriba, mientras utilizan bibliotecas de generación de Excel como Free Spire.XLS para producir archivos estructurados y listos para la presentación en la etapa final.

Esta separación mantiene la lógica de procesamiento de datos en Python y la lógica de presentación en Excel, mejorando la mantenibilidad y la fiabilidad.

Para obtener una guía más detallada y ejemplos, consulte el Tutorial de Spire.XLS for Python.


8. Problemas Comunes al Crear y Escribir Archivos de Excel en Python

Al automatizar la generación de Excel, se encuentran con frecuencia varios problemas prácticos.

  • Errores de ruta de archivo y permisos

    Verifique siempre que el directorio de destino exista y que el proceso tenga acceso de escritura antes de guardar los archivos.

  • Tipos de datos inesperados

    Controle explícitamente si los valores se escriben como texto o números para evitar errores de cálculo en Excel.

  • Sobrescrituras accidentales de archivos

    Utilice nombres de archivo con marca de tiempo o directorios de salida para evitar sobrescribir informes existentes.

  • Grandes conjuntos de datos

    Al manejar grandes volúmenes de datos, escriba las filas secuencialmente y evite operaciones de formato innecesarias dentro de los bucles.

Abordar estos problemas a tiempo ayuda a garantizar que la automatización de Excel siga siendo fiable a medida que aumentan el tamaño y la complejidad de los datos.


9. Conclusión

Crear archivos de Excel en Python es una solución práctica para automatizar informes, exportación de datos y actualizaciones de documentos en entornos empresariales reales. Al combinar la creación de archivos, la escritura de datos estructurados, el formato y los flujos de trabajo de actualización, la automatización de Excel puede ir más allá de los scripts únicos y convertirse en parte de un sistema estable.

Spire.XLS for Python proporciona una forma fiable de implementar estas operaciones en entornos donde la automatización, la coherencia y la mantenibilidad son esenciales. Puede solicitar una licencia temporal para desbloquear todo el potencial de la automatización de Python en el procesamiento de archivos de Excel.


Preguntas Frecuentes: Crear Archivos de Excel en Python

¿Puede Python crear archivos de Excel sin tener Microsoft Excel instalado?

Sí. Bibliotecas como Spire.XLS for Python funcionan independientemente de Microsoft Excel, lo que las hace adecuadas para servidores, entornos en la nube y flujos de trabajo automatizados.

¿Es Python adecuado para generar archivos de Excel grandes?

Python puede generar archivos de Excel grandes de manera efectiva, siempre que los datos se escriban secuencialmente y se eviten operaciones de formato innecesarias dentro de los bucles.

¿Cómo puedo evitar sobrescribir archivos de Excel existentes?

Un enfoque común es utilizar nombres de archivo con marca de tiempo o directorios de salida dedicados al guardar los informes de Excel generados.

¿Puede Python actualizar archivos de Excel creados por otros sistemas?

Sí. Python puede leer, modificar y ampliar archivos de Excel creados por otras aplicaciones, siempre que el formato del archivo sea compatible.

Ver También