En este post te voy a mostrar como crear archivos Excel con Python y Xlsxwriter, un módulo de Python que nos permite generar archivos XLSX sin necesidada de instalar otros frameworks.
{getToc} $title={Contenidos}XlsxWriter
XlsxWriter es una biblioteca de Python que permite crear archivos de hojas de cálculo en formato Excel .xlsx . Xlsxwriter nos permite crear y modificar hojas de cálculo de Excel utilizando Python. Puedes utilizarla para crear hojas de cálculo, agregar datos, aplicar formato, crear gráficos, agregar contraseñas de protección y muchas más funciones.
La utilización de Xlsxwriter es gratuita y no necesita la instalación de otras bibliotecas Python para su uso. Una de las grandes ventajas de usar XlsxWriter es que es liviano, y podemos exportar los datos almacenados en bases de datos SQL y Sqlite, archivos xml o Json, es decir convertir de otros formatos a XLSX.
Instalar Xlsxwriter en Python
Para instalar XlsxWriter no es necesario conocimientos avanzados, tan solo accede a la consola de tu ordenador y realiza la instalación a tráves de pip. Copia y pega el siguiente comando en tu terminal.
pip install XlsxWriter
Tambié puedes usar:
pip install --user XlsxWriter
Una vez instalado Xlsxwriter en nuestra computadora, podemos iniciar a generar los archivos que deseemos.
Importar XlsxWriter
Vamos a crea nuestro primer archivo Xlsx con Python y el módulo XlsxWriter, para ello lo primero que haremos es importar la biblioteca, y luego añadimos código de acuerdo a nuestras necesidades.
import xlsxwriter
libro = xlsxwriter.Workbook('primerArchivo.xlsx')
hoja = libro.add_worksheet()
hoja.write('A1', 'Mi primer Archivo')
libro.close()
Con libro = xlsxwriter.Workbook('primerArchivo.xlsx') hemos nuestro libro de Excel , en donde la variable libro es a la cual llamaremos para añadir nuestras hojas de trabajo.
Haciendo uso de hoja = libro.add_worksheet(), creamos una nueva hoja en nuestro libro.
Luego escribimos información en nuestra hoja a tráves de hoja.write('A1', 'Mi primer Archivo'), además podemos escribir fórmulas y diferentes tipos de datos.
Formatear con Xlsxwriter
Bien sabemos que cuando estamos trabajando con archivos Excel, necesitamos dar formato de estilos o tipo de datos en los libros .Xls, y XlsxWriter nos permite formatear de una manera muy fácil.
En la siguiente imagen se muestra la creación de un archivo Excel con XlsxWriter, donde se reflejan los gastos de una escuela y el costo tiene un formato de moneda y los encabezados se muestran letra negrita.
A continuación el ejemplo para generar el archivo .xlsx, eres libre de copiar y pegar el código para usar en tus proyectos.
import xlsxwriter
# Crear un libro de trabajo y agregar una hoja de cálculo.
workbook = xlsxwriter.Workbook('GastosComidaEscuela.xlsx')
worksheet = workbook.add_worksheet()
# Agregar un formato en negrita para resaltar celdas.
bold = workbook.add_format({'bold': True})
# Agregar un formato para números con formato de dinero.
money_format = workbook.add_format({'num_format': '$#,##0'})
# Escribir encabezados para los datos.
worksheet.write('A1', 'Producto', bold)
worksheet.write('B1', 'Costo', bold)
# Datos de gastos de comida en la escuela.
gastos_comida = [
['Almuerzo', 500],
['Merienda', 100],
['Cena', 600],
['Desayuno', 200],
]
# Comenzar desde la primera celda debajo de los encabezados.
row = 1
col = 0
# Iterar sobre los datos y escribirlos fila por fila.
for producto, costo in gastos_comida:
worksheet.write(row, col, producto)
worksheet.write(row, col + 1, costo, money_format)
row += 1
# Escribir el total utilizando una fórmula.
worksheet.write(row, 0, 'Total', bold)
worksheet.write_formula(row, 1, '=SUM(B2:B5)', money_format)
# Cerrar el libro de trabajo.
workbook.close()
Formato moneda XlsxWriter
Con la línea de código money_format = workbook.add_format({'num_format': '$#,##0'}) , se agrega el formato de dinero que luego se va a usar en el las celdas escogidas.
Formato negrita XlsxWriter
Si queremos agregar caracteres en un formato bold , o mejor conocido como negrita, se crea una variable en donde al libro agregamos el formato al libro, despues usaremos esa variable que almacena el formato en las diferentes celdas, en el ejemplo hemos creado: bold = workbook.add_format({'bold': True}), y es usada en las celdas de encabezados.
Color de fuente con XlsxWriter
De la misma manera podemos agregar diferentes colores a las fuentes de nuestro libro Excel. Creamos una varible que defina los colores a usar, fuente = workbook.add_format({'bold': True, 'font_color': 'red'}), en donde 'font_color': 'red' cambia el color del texto a rojo.
Tipo de Fuente
Podemos generar archivos Excel con Python con la facilidad de definir el nombre o tipo de fuente para las celdas escogidas. Lo hacemos así: fuente.set_font_name('Times New Roman'), en donde a la variable anterior le agregamos un nuevo atributo, en este caso el nombre de la fuente.
Entonces supongamos que queremos asignar el estilo de letra a Console a la variable bold, haremos así.
bold = workbook.add_format({'bold': True})
bold.set_font_name("Console")
Formatear Excel con XlsxWriter
He presentado en una tabla los métodos para formatear archivos .xlsx con Python usando XlsxWriter.
Descripción | Propiedad | Método |
---|---|---|
Modifica tamaño de fuente | 'font_size' | set_font_size() |
Letra Negrita | 'bold' | set_bold() |
Letra Italica | 'italic' | set_italic() |
Subrayado | 'underline' | set_underline() |
Bloquear celdas | 'locked' | set_locked() |
Alinear Horizontal | 'align' | set_align() |
Alinear Vertical | 'valign' | set_align() |
Esconder Fómulas | 'hidden' | set_hidden() |
Agregar borde | 'border' | set_border() |
Cambia color de fondo | 'bg_color' | set_bg_color() |
Crear diagramas con XlsxWriter
Otras de las funciones mas interesantes de XlsxWriter de Python, es que nos permite crear diagramas para la representación de datos haciendo uso de la clase Chart.
El primer paso es crear el diagrama o gráfica con add_chart(tipo de diagrama) a usar.
diagrama = libro.add_chart({'type': 'column'})
Y luego insertamos el diagrama en la hoja que deseemos. Ejemplo:
hoja.insert_chart('A7', chart)
A continuación se presenta un ejemplo de como crear gráficas en Excel con Python y XlsxWriter.
import xlsxwriter
libro = xlsxwriter.Workbook('primerArchivo.xlsx')
hoja = libro.add_worksheet()
formato_con_fuente_color = libro.add_format({
'font_name': 'Arial',
'font_color': 'red'
})
hoja.write('A1', 'Mi primer Archivo', formato_con_fuente_color)
# Crear un gráfico de columnas.
diagrama = libro.add_chart({'type': 'column'})
# Agregar datos al gráfico.
datos = [1, 2, 3, 4, 5] # Ejemplo de datos para el gráfico.
hoja.write_column('B1', datos) # Escribir datos en la columna B.
diagrama.add_series({
'categories': '=Sheet1!$A$1:$A$5',
'values': '=Sheet1!$B$1:$B$5',
'name': 'Datos de ejemplo', # Nombre de la serie de datos.
})
# Insertar el gráfico en la hoja de cálculo.
hoja.insert_chart('D2', diagrama)
# Cerrar el libro de trabajo.
libro.close()
La clase Chart tiene a su vez diferentes atributos con los cuale podemos escoger el tipo de diagrama, los label a usar y diferentes configuraciones.
Tipos de gráficas en XlsxWriter
Los tipos de gráficas o diagramas que podemos crear con XlsxWriter son:
- area: Crea una gráfica de estilo area
- bar: Crea un gráfico de estilo de barras (histograma transpuesto).
- column: Crea un gráfico de estilo de columna (histograma).
- line: Crea un gráfico de estilo de línea.
- pie: crea un gráfico de estilo circula.
- doughnut: Crea un gráfico de estilo Donut.
- scatter: Crea un gráfico de estilo de dispersión.
- stock: Crea un gráfico de estilo de cotización.
- radarCrea un gráfico de estilo radar.
chart.add_series()
Con chart.add_series() agregas una serie de datos a un gráfico, los cuales son los valores para generar las gráficas. Ejemplo para como usar chart.add_series() y agregar datos:
chart.add_series({
'categories': '=Sheet1!$A$1:$A$5',
'values': '=Sheet1!$B$1:$B$5',
'line': {'color': 'red'},
})
chart.add_series({
'categories': ['Sheet1', 0, 0, 4, 0],
'values': ['Sheet1', 0, 1, 4, 1],
'line': {'color': 'red'},
})
AutoFiltros en XlsxWriter
Otra de las funciones que nos ofrece XlsxWriter de Python es que nos permite añadir autofiltros a las hojas.
hoja.autofilter('A1:D11')
Existen más atributos o métodos , pero he mencionado solo los que más se suelen usar, puedes visitar la página oficial para mayor información.