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
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.
- 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 %}
- 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})
- Crear el Documento de Word con
python-docx
: Utilizapython-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')
- Crear la Hoja de Cálculo de Excel con
xlsxwriter
: Utilizaxlsxwriter
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.