Saltar al pie de página
USANDO IRONXL PARA PYTHON

Generar Documentos Word a partir de Datos de Excel en Python

Generar plantillas de Word a partir de hojas de cálculo de Excel usando Python ofrece numerosos beneficios que pueden mejorar significativamente la eficiencia, precisión y presentación en varios contextos profesionales y personales. Al aprovechar la automatización, personalización e integridad de los datos, los profesionales pueden asegurar que sus documentos de Word sean herramientas de comunicación efectivas que transmitan información esencial con claridad y precisión. Una biblioteca que puede convertir Microsoft Excel a Microsoft Word es el paquete de Python IronXL de Iron Software y la biblioteca python-docx.

Este artículo examinará los pasos necesarios para generar documentos de Word a partir de archivos de Excel.

Cómo generar un documento de Word a partir de datos de Excel en Python

  1. Crea un archivo de Python llamado excelToWord.py.
  2. Instala los paquetes IronXL y python-docx.
  3. Crea o agrega un archivo de Excel a la carpeta del proyecto.
  4. Lee documentos de Excel usando IronXL.
  5. Crea un documento de Word e inserta datos de Excel usando python-docx.

¿Qué es IronXL?

IronXL for Python es una biblioteca robusta desarrollada por Iron Software que permite a los desarrolladores crear, leer y editar archivos de Excel (XLS, XLSX y CSV) en proyectos de Python. Algunas características y beneficios clave de IronXL:

Características clave

  1. Sin Dependencia de Excel: IronXL no requiere instalar Microsoft Excel en tu servidor, lo que lo hace ideal para entornos de servidor sin Excel.
  2. API Intuitiva: IronXL proporciona una API natural e intuitiva para trabajar con archivos de Excel, lo que facilita su integración en tus proyectos de Python.
  3. Soporte para Múltiples Formatos: IronXL soporta varios formatos de archivo de Excel, incluyendo XLS, XLSX, CSV y TSV.
  4. Estilización de Celdas: Puedes estilizar celdas con diferentes tipos de letra, tamaños, fondos, bordes y formatos numéricos.
  5. Manejo de Fórmulas: IronXL puede trabajar con fórmulas de Excel y recalcularlas cada vez que se edita una hoja.
  6. Compatibilidad Multiplataforma: IronXL funciona en Windows, macOS, Linux, Docker, Azure y AWS.

¿Qué es python-docx?

python-docx es una biblioteca de Python que crea, modifica y trabaja con documentos de Microsoft Word como archivos .docx. Proporciona una API simple para interactuar con documentos de Word, permitiéndote realizar tareas como agregar texto, formatearlo, insertar tablas e imágenes, y más.

Características principales

1. Creación de documentos

Puedes generar documentos de Word desde cero y agregar contenido, incluyendo párrafos, tablas, encabezados y más. Este paquete también se puede utilizar para editar documentos individuales.

2. Manipulación de texto

Agrega y modifica párrafos de texto. Da formato al texto (por ejemplo, negrita, cursiva, subrayado, etc.) usando "runs" (partes de texto con diferentes estilos dentro de un párrafo). Agrega y estiliza encabezados de varios niveles.

3. Agregar tablas

Crea tablas con un número especificado de filas y columnas. Accede y modifica celdas individuales en una tabla.

4. Lists

Crea listas con viñetas o numeradas con estilos predefinidos.

5. Trabajar con estilos

Aplica estilos predefinidos como "Encabezado 1", "Normal", etc. También puedes definir y aplicar estilos personalizados a párrafos o texto.

6. Inserción de imágenes

Inserta imágenes en el documento en ubicaciones específicas. Puedes redimensionar imágenes especificando su ancho y alto.

Requisitos previos

Antes de sumergirnos en el código, asegúrate de tener los siguientes requisitos previos:

  1. Python Instalado: Asegúrate de tener Python instalado en tu máquina. Puedes descargarlo desde el sitio web oficial de Python.
  2. IronXL Instalado: Necesitas instalar el paquete IronXL. Puedes hacerlo usando pip.
  3. python-docx Instalado: Necesitas instalar el paquete python-docx. Puedes hacerlo usando pip.
  4. Archivo de Excel: Crea un archivo de Excel de muestra con datos.

Paso 1: Crea un archivo Python llamado excelToWord.py

Abre tu IDE favorito como Visual Studio Code y crea un archivo llamado excelToWord.py.

Cómo Generar Documentos de Word de Datos de Excel en Python: Figura 1 - Generación de Documento de Excel

Paso 2: Agregar los paquetes IronXL y python-docx

Usa Pip para instalar los paquetes IronXL y python-docx.

pip install IronXL python-docx
pip install IronXL python-docx
SHELL

Paso 3: Cree o agregue un archivo de Excel a la carpeta del proyecto

Copia el archivo de Excel de muestra a tu carpeta de código. El archivo contiene los datos siguientes.

Cómo Generar Documento de Word de Datos de Excel en Python: Figura 2 - Excel de Muestra

Paso 4: Leer el documento de Excel con IronXL

Usando IronXL, carga el documento de Excel y lee todas las celdas usando el código siguiente.

import ironxl
# Import Document class from python-docx to work with Word documents
from docx import Document

# Set the License Key for IronXL (replace 'your license' with your actual license key)
ironxl.License.LicenseKey = "your license"

# Load the Excel workbook and select the first worksheet
workbook = ironxl.WorkBook.Load("sample.xlsx")
sheet = workbook.WorkSheets[0]

# Read data from the Excel sheet
data = []

# Iterate through rows and columns in the Excel sheet
for row in range(0, len(sheet.Rows)):
    row_data = []
    for col in range(0, len(sheet.Columns)):
        cell_value = sheet.GetCellAt(row, col)
        print(cell_value)  # Print each cell value
        row_data.append(cell_value)
    data.append(row_data)
import ironxl
# Import Document class from python-docx to work with Word documents
from docx import Document

# Set the License Key for IronXL (replace 'your license' with your actual license key)
ironxl.License.LicenseKey = "your license"

# Load the Excel workbook and select the first worksheet
workbook = ironxl.WorkBook.Load("sample.xlsx")
sheet = workbook.WorkSheets[0]

# Read data from the Excel sheet
data = []

# Iterate through rows and columns in the Excel sheet
for row in range(0, len(sheet.Rows)):
    row_data = []
    for col in range(0, len(sheet.Columns)):
        cell_value = sheet.GetCellAt(row, col)
        print(cell_value)  # Print each cell value
        row_data.append(cell_value)
    data.append(row_data)
PYTHON

Paso 5: Crear un documento de Word e insertar datos de Excel usando python-docx

El proceso de generación de documentos de Word implica crear un documento de Word e insertar los datos que se leyeron del archivo de Excel.

# Create a new Word document
doc = Document()

# Add a title to the Word document
doc.add_heading('Excel Data Export Using Python Docx', 0)

# Create a table with headers (first row of Excel data)
table = doc.add_table(rows=1, cols=len(data[0]))
hdr_cells = table.rows[0].cells
# Populate header cells with data
for i, header in enumerate(data[0]):
    hdr_cells[i].text = str(header)

# Populate table with data from Excel
for row in data[1:]:
    row_cells = table.add_row().cells
    for i, cell in enumerate(row):
        row_cells[i].text = str(cell)

# Save the generated Word document
doc.save("sample.docx")
# Create a new Word document
doc = Document()

# Add a title to the Word document
doc.add_heading('Excel Data Export Using Python Docx', 0)

# Create a table with headers (first row of Excel data)
table = doc.add_table(rows=1, cols=len(data[0]))
hdr_cells = table.rows[0].cells
# Populate header cells with data
for i, header in enumerate(data[0]):
    hdr_cells[i].text = str(header)

# Populate table with data from Excel
for row in data[1:]:
    row_cells = table.add_row().cells
    for i, cell in enumerate(row):
        row_cells[i].text = str(cell)

# Save the generated Word document
doc.save("sample.docx")
PYTHON

Código completo para generar documentos de Word

# Import required libraries
import ironxl
from docx import Document

# Set the License Key for IronXL
ironxl.License.LicenseKey = "your license"

# Load the Excel workbook
workbook = ironxl.WorkBook.Load("sample.xlsx")
sheet = workbook.WorkSheets[0]

# Read data from the Excel sheet
data = []
# Iterate through rows and columns in the Excel sheet
for row in range(0, len(sheet.Rows)):
    row_data = []
    for col in range(0, len(sheet.Columns)):
        cell_value = sheet.GetCellAt(row, col)
        print(cell_value)  # Print each cell value
        row_data.append(cell_value)
    data.append(row_data)

# Document generation process
# Create a new Word document
doc = Document()
# Add a title to the Word document
doc.add_heading('Excel Data Export Using Python Docx', 0)

# Create a table in the Word document
table = doc.add_table(rows=1, cols=len(data[0]))
hdr_cells = table.rows[0].cells
for i, header in enumerate(data[0]):
    hdr_cells[i].text = str(header)  # Add header cells

for row in data[1:]:
    row_cells = table.add_row().cells
    for i, cell in enumerate(row):
        row_cells[i].text = str(cell)

# Save the Word document
doc.save("sample.docx")
# Import required libraries
import ironxl
from docx import Document

# Set the License Key for IronXL
ironxl.License.LicenseKey = "your license"

# Load the Excel workbook
workbook = ironxl.WorkBook.Load("sample.xlsx")
sheet = workbook.WorkSheets[0]

# Read data from the Excel sheet
data = []
# Iterate through rows and columns in the Excel sheet
for row in range(0, len(sheet.Rows)):
    row_data = []
    for col in range(0, len(sheet.Columns)):
        cell_value = sheet.GetCellAt(row, col)
        print(cell_value)  # Print each cell value
        row_data.append(cell_value)
    data.append(row_data)

# Document generation process
# Create a new Word document
doc = Document()
# Add a title to the Word document
doc.add_heading('Excel Data Export Using Python Docx', 0)

# Create a table in the Word document
table = doc.add_table(rows=1, cols=len(data[0]))
hdr_cells = table.rows[0].cells
for i, header in enumerate(data[0]):
    hdr_cells[i].text = str(header)  # Add header cells

for row in data[1:]:
    row_cells = table.add_row().cells
    for i, cell in enumerate(row):
        row_cells[i].text = str(cell)

# Save the Word document
doc.save("sample.docx")
PYTHON

Explicación del código

Este script de Python realiza dos tareas principales.

1. Lectura de datos de un archivo de Excel con IronXL

  • El script comienza configurando una licencia para la biblioteca IronXL, que se utiliza para manejar archivos de Excel en Python.
  • Luego, carga un archivo de Excel (sample.xlsx) y selecciona la primera hoja de cálculo del archivo.
  • El script lee los datos de la hoja de cálculo, iterando a través de todas las filas y columnas. Recoge los valores de cada celda en una lista 2D (data), donde cada fila en la hoja de Excel corresponde a una sublista dentro de los datos.
  • Los valores de las celdas se imprimen en la consola a medida que se leen.

2. Creación de un documento de Word con python-docx

  • Se crea un nuevo documento de Word usando la biblioteca python-docx.
  • El script agrega un título ("Exportación de Datos de Excel Usando Python Docx") en la parte superior del documento usando un encabezado.
  • Luego, crea una tabla en el documento, donde la primera fila de la tabla contiene los encabezados de la primera fila de la hoja de Excel, y las filas subsiguientes contienen los datos correspondientes del archivo de Excel.
  • Finalmente, el documento de Word se guarda como sample.docx.

El script lee datos de un archivo de Excel (sample.xlsx), los procesa y exporta los datos a una tabla en un nuevo documento de Word (sample.docx). La primera fila de la hoja de Excel se utiliza como encabezados de tabla, y cada fila de datos de la hoja de Excel se agrega al documento de Word como una fila en la tabla.

Resultado

Cómo Generar Documento de Word de Datos de Excel en Python: Figura 3 - Excel a Word

Archivo de Word

Cómo Generar Documento de Word de Datos de Excel en Python: Figura 4 - Formato de Documento Word

Licencia IronXL (versión de prueba disponible)

IronXL funciona con un archivo de licencia válido adjunto al código. Los usuarios pueden obtener fácilmente una licencia de prueba desde la página de licencias.

Para usar la licencia, coloca la clave de licencia en alguna parte del código como se muestra a continuación antes de usar la biblioteca IronXL.

ironxl.License.LicenseKey = "Your License Key"
ironxl.License.LicenseKey = "Your License Key"
PYTHON

Conclusión

El código de muestra demuestra una forma efectiva de leer datos desde un archivo de Excel usando IronXL y luego exportar esos datos a un documento de Word usando python-docx. El proceso involucra dos pasos principales:

  1. Extracción de Datos de Excel: El script carga un archivo de Excel y extrae los datos de su primera hoja de cálculo. Itera a través de las filas y columnas para recolectar los valores de las celdas en una lista, que puede ser fácilmente manipulada o guardada.
  2. Creación y Población de un Documento de Word: Usando la biblioteca python-docx, el script crea un nuevo documento de Word, agrega un título y formatea los datos extraídos de Excel en una tabla en el documento de Word. Coloca automáticamente la primera fila de datos de Excel como encabezados y las filas restantes como datos de la tabla.

Este enfoque permite una transferencia de datos fluida de Excel a Word, lo que puede ser útil para tareas como generación de informes, exportaciones de datos o automatización de documentos. La combinación de IronXL para manejo de Excel y python-docx para creación de documentos de Word ofrece una solución poderosa para trabajar con estos formatos de archivo en Python.

Preguntas Frecuentes

¿Cómo puedo convertir datos de Excel en un documento de Word usando Python?

Puedes convertir datos de Excel en un documento de Word usando Python al utilizar la biblioteca IronXL para leer y procesar archivos Excel, y luego usar la biblioteca python-docx para crear y poblar un documento de Word.

¿Cuáles son las ventajas de usar IronXL y python-docx juntos?

La combinación de IronXL y python-docx permite una integración y automatización sin problemas de las conversiones de documentos de Excel a Word. IronXL ofrece características como la lectura y edición de archivos Excel sin necesidad de Microsoft Excel, mientras que python-docx proporciona una API sencilla para manipular documentos de Word.

¿Cómo lees un archivo Excel en Python sin tener Microsoft Excel instalado?

Puedes leer un archivo Excel en Python sin tener Microsoft Excel instalado utilizando la biblioteca IronXL. IronXL te permite cargar archivos Excel y acceder a sus datos de forma programática.

¿Cuál es el proceso para crear un documento de Word a partir de datos de Excel?

El proceso incluye usar IronXL para leer datos de un archivo Excel y luego usar python-docx para crear un documento de Word donde los datos de Excel se insertan en tablas o bloques de texto.

¿Puede IronXL trabajar con múltiples formatos de archivo Excel?

Sí, IronXL admite múltiples formatos de archivo Excel, como XLS, XLSX y CSV, proporcionando flexibilidad en el manejo de diferentes tipos de archivos Excel.

¿Cómo puedo instalar IronXL y python-docx en mi entorno de Python?

Puedes instalar IronXL y python-docx en tu entorno de Python utilizando pip con el comando: pip install IronXL python-docx.

¿Cuáles son los beneficios de automatizar las conversiones de documentos de Excel a Word?

Automatizar las conversiones de documentos de Excel a Word puede mejorar la eficiencia, precisión y presentación al reducir tareas manuales, minimizar errores y permitir una formateo y integridad de datos consistentes en los documentos.

¿Cómo se estilizan las celdas de Excel usando IronXL?

IronXL proporciona funcionalidades para estilizar celdas de Excel, permitiéndote personalizar la apariencia de las celdas, como ajustar fuentes, colores y bordes, lo cual puede ser útil para el formateo antes de transferir datos a Word.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más