516 - Crear documentos de Word y Excel con Python

516 - Crear documentos de Word y Excel con Python

Automatiza la creación de documentos de #word y #excel utilizando #python en #linux y otros. Genera informes, facturas, libros y todo tipo de documentos

1:25
-3:15

Como te decía en anteriores episodios del podcast, estoy preparando la nueva temporada, y dentro de esta nueva temporada, Python tiene una importante relevancia, y esto por supuesto unido con la automatización. Al final, tenemos que combinar lo que nos gusta con automatizar, para conseguir no hacer aquello que no nos gusta. O simplemente, para invertir nuestro tiempo en lo que nos interesa, y toda la parte menos creativa dejarselo a las máquinas. Así, las posibilidades que nos ofrece Python para automatizar son simplemente espectaculares, y esto, lo veremos en esta nueva temporada que tenemos a la vuelta de la esquina. Pero, para abrir boca, hoy te traigo tres módulos de Python con los que crear documentos de Word y Excel con Python, de forma relativamente sencilla.

Crear documentos de Word y Excel con Python

Como te decía en la introducción, esto es solo para abrir boca, de lo que viene en la próxima temporada. Vamos a automatizar de verdad, conectando diferentes tecnologías, todas las que consideremos para quitarnos de encima trabajo de encima.

¿Porque con Python?

Lo primero que te preguntarás es porque hacerlo con Python, y no utilizar las macros que están disponibles en los distintos editores. La cuestión, es que lo que pretendo hacer es crear documentos de forma automática. Es decir, no se trata de automatizar un documento, sino automatizar la creación de un documento.

Así, es posible, crear informes de forma completamente automatizada, por ejemplo, recogiendo datos de internet, o incluso combinando esos datos recogidos de internet con herramientas como pueden ser ChatGPT.

Y esto se puede hacer mediante una programación horaria o bien, recurriendo a una web o una llamada API, como veremos durante la próxima temporada.

¿Porque Word y Excel y no Writer y Calc de LibreOffice?

Como sabes soy un amante de LibreOffice, y a pesar de ello, estoy diciendo de hacer estas automatizaciones con Word y Excel, y te estarás preguntando la razón para hacerlo de esta forma. Pues la cuestión es que quiero llegar al mayor número de usuarios posibles, con el objetivo de cuantos mas se quieran implicar en esta nueva temporada mejor.

Python, tiene un increible potencial para simplificar nuestro día a día, y en este sentido quiero conseguir que esto sea lo más cómodo para todos.

Los módulos para interactuar con Word y Excel

A continuación te indico dos módulos para trabajar con Word y Excel. Pero, a continuación, te indicaré un tercer módulo, sobre el que te hablé en un episodio anterior del podcast, que te permitirá combinar todo esto y llevarlo a un siguiente nivel.

Creando documentos con python-docx

En el mundo actual, la automatización se ha convertido en una herramienta esencial para agilizar tareas repetitivas. Imagina poder generar documentos de Word sin tener que hacerlo manualmente. ¡Pues bien, estás de suerte! En este artículo, exploraremos cómo crear documentos de Word utilizando la librería python-docx en Python. Prepara tu entusiasmo, porque vamos a sumergirnos en el fascinante mundo de la programación.

¿Qué es python-docx?

python-docx es una librería de Python que permite la creación y manipulación de documentos de Microsoft Word (.docx). Con esta herramienta, puedes generar informes, currículums, cartas y mucho más, todo de manera programática. ¿Te imaginas la eficiencia y la consistencia que esto puede aportar a tus tareas diarias?

Instalación

Antes de comenzar, asegúrate de tener Python instalado en tu sistema. Luego, puedes instalar python-docx utilizando pip, el gestor de paquetes de Python. Abre tu terminal y ejecuta el siguiente comando:

pip install python-docx

Con la librería instalada, estamos listos para empezar.

Creando un Documento Básico

Vamos a sumergirnos en la acción creando nuestro primer documento de Word utilizando python-docx. Aquí hay un ejemplo sencillo para que comiences:

from docx import Document

# Crear un nuevo documento
doc = Document()

# Agregar un título
doc.add_heading('Mi Primer Documento con python-docx', level=1)

# Agregar un párrafo
doc.add_paragraph('¡Hola a todos! Bienvenidos a mi documento generado con python-docx.')

# Guardar el documento
doc.save('mi_primer_documento.docx')

En este ejemplo, hemos creado un documento nuevo, agregado un título y un párrafo, y luego guardado el documento con el nombre «mi_primer_documento.docx». ¡Así de simple es crear tu propio contenido en Word utilizando Python!

Dar Formato al Documento

Uno de los puntos fuertes de python-docx es su capacidad para dar formato a los documentos. Puedes aplicar estilos a los títulos, cambiar fuentes, colores y mucho más. Aquí hay un ejemplo de cómo puedes dar formato a tu documento:

from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT

doc = Document()

# Agregar un título con formato
title = doc.add_heading('Documento con Formato', level=1)
title.bold = True
title.italic = True
title.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

# Agregar un párrafo con estilo
paragraph = doc.add_paragraph('Este es un párrafo con estilo.')
paragraph.add_run(' ¡Genial, verdad?').bold = True
paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY

# Guardar el documento
doc.save('documento_con_formato.docx')

Cómo Crear Documentos con xlsxwriter

La capacidad de generar archivos Excel de manera automatizada te abre todo un mundo de opciones y posibilidades. Aquí es donde entra en juego la librería xlsxwriter en Python. A continuación te explico de forma sencilla somo puedes utilizar esta herramientas para crear una sencilla hoja de cálculo.

Introducción a xlsxwriter

xlsxwriter es una librería de Python que permite crear y dar formato a archivos Excel en formato .xlsx. Si alguna vez te has encontrado generando informes, tablas o gráficos en Excel de manera repetitiva, xlsxwriter te brinda la capacidad de automatizar estos procesos, ahorrándote tiempo y esfuerzo.

Instalación

Para empezar, necesitas instalar la librería xlsxwriter. Abre tu terminal y ejecuta el siguiente comando:

pip install XlsxWriter

Con la librería instalada, estás listo para comenzar a crear archivos Excel con Python.

Creando un Documento Excel Básico

Vamos a sumergirnos en la acción creando un documento Excel simple con xlsxwriter. Aquí tienes un ejemplo básico:

import xlsxwriter

# Crear un nuevo archivo Excel
workbook = xlsxwriter.Workbook('mi_primer_excel.xlsx')

# Agregar una hoja de cálculo
worksheet = workbook.add_worksheet()

# Agregar datos
data = ['Nombre', 'Edad', 'Profesión']
worksheet.write_row('A1', data)

# Cerrar el libro (guardar)
workbook.close()

En este ejemplo, hemos creado un nuevo archivo Excel llamado «mi_primer_excel.xlsx», agregado una hoja de cálculo y escrito una fila de datos. ¡Así de simple es comenzar a crear tus propios archivos Excel!

Dar Formato a las Celdas

xlsxwriter también te permite dar formato a las celdas, estableciendo colores, fuentes y más. Aquí hay un ejemplo de cómo dar formato a las celdas:

import xlsxwriter

workbook = xlsxwriter.Workbook('excel_con_formato.xlsx')
worksheet = workbook.add_worksheet()

# Dar formato al título en negrita y centrado
title_format = workbook.add_format({'bold': True, 'align': 'center'})
worksheet.write('A1', 'Ventas Mensuales', title_format)

# Dar formato a los datos en negrita
data_format = workbook.add_format({'bold': True})
data = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo']
worksheet.write_row('A3', data, data_format)

# Cerrar el libro (guardar)
workbook.close()
Agregar Gráficos

Una de las características más potentes de xlsxwriter es la capacidad de agregar gráficos a tus archivos Excel. Aquí tienes un ejemplo simple de cómo hacerlo:

import xlsxwriter

workbook = xlsxwriter.Workbook('excel_con_grafico.xlsx')
worksheet = workbook.add_worksheet()

# Datos para el gráfico
data = [300, 450, 600, 800, 1000]
worksheet.write_column('A1', data)

# Crear un gráfico de columnas
chart = workbook.add_chart({'type': 'column'})
chart.add_series({'values': '=Sheet1!$A$1:$A$5'})

# Insertar el gráfico en la hoja de cálculo
worksheet.insert_chart('C2', chart)

# Cerrar el libro (guardar)
workbook.close()

Cómo Automatizar Documentos con Python: python-docx, xlsxwriter y Jinja2

La automatización es una herramienta poderosa que nos permite agilizar tareas repetitivas y liberar tiempo para tareas más creativas y estratégicas. ¿Te imaginas poder generar automáticamente documentos de Word y hojas de cálculo de Excel utilizando datos de una manera eficiente? En este artículo, exploraremos cómo combinar las librerías python-docx, xlsxwriter y Jinja2 para lograr precisamente eso: automatizar la creación de documentos y hojas de cálculo de manera programática.

Introducción a las Librerías
  • Jinja2: Es un motor de plantillas para Python que nos permite combinar datos con plantillas predefinidas para generar contenido de manera dinámica.
Preparación del Entorno

Antes de comenzar, asegúrate de tener las tres librerías instaladas en tu entorno de desarrollo. Puedes instalarlas utilizando pip:

pip install python-docx xlsxwriter jinja2
Automatizando Documentos y Hojas de Cálculo

Ahora, vamos a ver cómo puedes combinar estas librerías para automatizar la creación de documentos y hojas de cálculo personalizados. Imagina que deseas generar informes mensuales de ventas en un formato específico.

  1. Crear una Plantilla con Jinja2: Primero, crea una plantilla utilizando el lenguaje de marcado de Jinja2. Esta plantilla contendrá marcadores de posición para los datos que deseas insertar en el documento. Por ejemplo:
   Informe Mensual de Ventas

   {{ mes }} {{ año }}

   Ventas Totales: {{ ventas_totales }}
   Ventas por Producto:
   {% for producto, ventas in ventas_productos.items() %}
   - {{ producto }}: {{ ventas }}
   {% endfor %}
  1. Generar el Contenido con Jinja2: Utiliza Jinja2 para combinar los datos con la plantilla y generar el contenido dinámico:
   from jinja2 import Template

   template_str = ...  # Carga la plantilla desde un archivo o variable

   template = Template(template_str)
   contenido = template.render(mes="Agosto", año=2023, ventas_totales=50000, ventas_productos={"Producto A": 20000, "Producto B": 30000})
  1. Crear el Documento de Word con python-docx: Utiliza python-docx para crear un documento de Word y agregar el contenido generado:
   from docx import Document

   doc = Document()
   doc.add_heading('Informe Mensual de Ventas', level=1)
   doc.add_paragraph(contenido)
   doc.save('informe_ventas.docx')
  1. Crear la Hoja de Cálculo de Excel con xlsxwriter: Utiliza xlsxwriter para crear una hoja de cálculo de Excel y agregar los datos generados:
   import xlsxwriter

   workbook = xlsxwriter.Workbook('informe_ventas.xlsx')
   worksheet = workbook.add_worksheet()

   row = 0
   for line in contenido.split('\n'):
       worksheet.write(row, 0, line)
       row += 1

   workbook.close()

Más información,

  • Documentación de python-docx: Enlace
  • Documentación de xlsxwriter: Enlace
  • Documentación de Jinja2: Enlace

Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *