Crear archivos excel (xls) con python y xlwt
Python y Excel |
Hay varias maneras de crear hojas de cálculo de Microsoft Excel en Python. Una de las formas puede ser utilizar PyWin32′s con el método win32com.client (que veremos más adelante en otra entrada), o utilizar el paquete xlwt.
Aprenderemos a crear una hoja de cálculos excel y la forma de crear celdas con estilo en python.
Conseguir xlwt
La primer tarea será conseguir el paquete xlwt para empezar a trabajar. Se puede conseguir desde PyPI. En caso de tener pip instalado podemos instalarlo de esa manera también. Una ves instalado el módulo ya podemos empezar a trabajar.
Puedes ver: Como instalar pip en Linux y Windows
Instalación del paquete xlwt
Lo que hice para instalarlo en windows fue copiar la carpeta xlwt-0.7.5 en la carpeta C:Python27. Luego entre por consola a la direccíon C:Python27xlwt-0.7.5 y ejecute el siguiente código:
C:Python27xlwt-0.7.5> python setup.py install
Usando xlwt
Archivo Excel en python |
El módulo xlwt es bastante sencillo de usar, aunque la documentación es bastante escasa. En el repositorio de Github hay un montón de ejemplos para revisar. Ahora vamos a crear una simple hoja de calculo:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import xlwt
#----------------------------------------------------------------------
def main():
----libro = xlwt.Workbook()
----libro1 = libro.add_sheet("Prueba")
----cols = ["A", "B", "C", "D", "E"]
----txt = "Fila %s, Columna %s"
----for num in range(5):
--------row = libro1.row(num)
--------for index, col in enumerate(cols):
------------value = txt % (num+1, col)
------------row.write(index, value)
----libro.save("prueba.xls")
#----------------------------------------------------------------------
if __name__ == "__main__":
main()
En el ejemplo anterior, lo primero que hacemos es exportar el módulo xlwt y creamos una función llamada main. En la función main, creamos una instancia de xlwt.Workbook y añadimos una hoja de trabajo con el método add_sheet (la etiqueta de nuestra hoja se llamara prueba). Luego creamos un bucle anidado para crear 5 filas y 5 columnas con un valor de contenido. Se escribe la información de la fila/columna en cada celda. Y por último guardamos el archivo con el nombre prueba.xls .
Creación de una celda con estilo
Hoja Excel con estilo en Python |
Ahora vamos a modificar el código de tal manera que podamos añadir hojas de trabajo mediante el uso de una función. También crearemos una función que pueda crear una hoja de calculo y en ella: celdas con estilo:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import xlwt
#----------------------------------------------------------------------
def agregar_hoja(libro, nombre):
----"""
----Agregar hoja con una linea de datos
----"""
----valor = "La hoja se llama: %s" % nombre
----hoja = libro.add_sheet(nombre)
----hoja.write(0,0, valor)
#----------------------------------------------------------------------
def agregar_estilo_hoja(libro, nombre):
----"""
----Agregar hoja con estilo
----"""
----valor = "Este es el estilo de hoja!"
----hoja = libro.add_sheet(nombre)
----style = 'pattern: pattern solid, fore_colour blue;'
----hoja.row(0).write(0, valor, xlwt.Style.easyxf(style))
#----------------------------------------------------------------------
def main():
----""""""
----libro = xlwt.Workbook()
----hoja1 = libro.add_sheet("Hoja1")
----cols = ["A", "B", "C", "D", "E"]
----txt = "Fila %s, Columna %s"
----for num in range(5):
--------Fila = hoja1.row(num)
--------for index, col in enumerate(cols):
------------valor = txt % (num+1, col)
------------Fila.write(index, valor)
----agregar_hoja(libro, "Hoja2")
----agregar_estilo_hoja(libro, "EstiloHoja")
----libro.save("Prueba2.xls")
#----------------------------------------------------------------------
if __name__ == "__main__":
main()
Aquí creamos un método add_sheet que acepta una instancia de libro y el nombre de la hoja. Se añade una hoja de trabajo con una celda que nos dice el nombre de la hoja de trabajo. La función agregar_estilo_hoja funciona de la misma manera, lo único es que crea una celda con un estilo y mensaje.
Creación de una fila con estilo más compleja
Fila con estilo más compleja |
En este ejemplo vamos a crear el mismo ejemplo original para crear el mismo 5 x 5. También vamos a crear una celda de fondo rojo, borde y una fecha específica:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from datetime import date
import xlwt
#----------------------------------------------------------------------
def main():
libro = xlwt.Workbook()
hoja1 = libro.add_sheet("Hoja1")
cols = ["A", "B", "C", "D", "E"]
txt = "Filas %s, Columnas %s"
for num in range(5):
fila = hoja1.row(num)
for index, col in enumerate(cols):
valor = txt % (num+1, col)
fila.write(index, valor)
valor = date(1984,1,17)
fmt = xlwt.Style.easyxf("""
font: name Arial;
borders: left thick, right thick, top thick, bottom thick;
pattern: pattern solid, fore_colour red;
""", num_format_str='YYYY-MM-DD')
hoja1.write(6,1,valor, fmt)
libro.save("prueba3.xls")
#----------------------------------------------------------------------
if __name__ == "__main__":
main()
-
hola gracias a su explicación pude hacer esto. https://drive.google.com/open?id=0B1scOInPo1MISmRGZGxqckZ6VkU
quisiera saber como llamar un rango de celdas y los resultados guardarlos en el excelgracias
-
como puedo colocar la codificacion UTF-8 ????
-
hay alguna forma de crear un excel desde un pdf, ya sea enviandolo desde la vista o de manera interna (Backend) pero con el mismo diseño del pdf sin tener que crear una estructura para el excel????
-
Hola
Al ejecutar solo me pide ingresar datos, cual es el sieguiente paso?
Deja una respuesta
Xlsxwriter es más potente: https://xlsxwriter.readthedocs.org/en/latest/