Archivo para 25/09/11

Crear, Leer y Modificar una Hoja Excel con Python

Trabajar con hojas excel desde python es bastante sencillo si hacemos uso de unas cuantos modulos que nos
facilitan esta labor, estos son:

– xlwt: utilizada para escribir excel
– xlrd: utilizada para modificar excel
– xlutils: require de las anteriores y son una serie de utilidades que nos permiten entre otras cosas,
copiar o modificar una excel previa.

Puedes descargarlas desde el siguiente enlace: http://www.python-excel.org/

La instalacion es tan simple como descomprimir el .tar.gz del modulo y ejecutar:

$ sudo python setup.py install

desde el directorio donde se descomprimen. Tambien puedes usar otras utilidades como easy_install o pip
para instalar mas facilmente modulos en Python:

Ejemplo:

$ sudo apt-get install python-setuptools
$ sudo easy_install xlwt

En Ubuntu tambien podemos instalar esos modulos directamente desde repositorio:

$ sudo apt-get install python-xlwt ptthon-xlrd

Nota: Antes de seguir con los ejemplos deberas tener instalados los 3 modulos: xlwt, xlrd y xlutils.

Primer ejemplo: Crear una hoja Excel

# Ejemplo de creacion de hoja Excel
import xlwt
from datetime import datetime
style0 = xlwt.easyxf('font: name Times New Roman, colour red, bold on')
style1 = xlwt.easyxf('',num_format_str='DD-MMM-YY')
wb = xlwt.Workbook()
ws = wb.add_sheet('A Test Sheet',cell_overwrite_ok=True)
ws.write(0, 0, 'Test', style0)
ws.write(1, 0, datetime.now(), style1)
ws.write(2, 0, 4)
ws.write(2, 1, 1)
ws.write(2, 2, xlwt.Formula("A3+B3"))
wb.save('example.xls')

En el codigo, importamos el modulo xlwt (import xwlt) que nos permite acceder a la libreria correspondiente
para escribir la hoja excel.
y basicamente definimos 2 estilos para la hoja. Uno con fuente de texto Times New Roman, negrita y color rojo
y otro para formatear una fecha.

Despues creamos el fichero excel:

wb = xlwt.Workbook()

Le añadimos una pestaña llamada “A teest sheet”:

ws = wb.add_sheet('A Test Sheet',cell_overwrite_ok=True)

nota: la opcion “cell_overwrite_ok=True” es para que permita sobreescribir celdas.

Y ya estamos listos para ir escribiendo valores en la excel. Por ejemplo:

ws.write(1, 0, datetime.now(), style1)

escribe en la posicion columna 0, fila 1 la fecha actual y aplicandole el estilo style1 definido anteriormente.

Tambien podemos escribir formulas:

ws.write(2, 2, xlwt.Formula("A3+B3"))

Y por ultimo cuando nos cansemos de añadir valores, guardamos finalmente la excel en la ruta deseada:

wb.save('example.xls')

Segundo Ejemplo: Leer una hoja Excel

Esta vez partimos del caso inverso. Creada ya una excel, queremos leer sus valores.

# Ejemplo de lectura de hoja Excel
import xlrd
book = xlrd.open_workbook("example.xls")
print "The number of worksheets is", book.nsheets
print "Worksheet name(s):", book.sheet_names()
sh = book.sheet_by_index(0)
print sh.name, sh.nrows, sh.ncols
print "Cell (2,0) is: ", sh.cell_value(rowx=2, colx=0)
for rx in range(sh.nrows):
print sh.row(rx)

Primero importamos el modulo “xlrd” con:

import xlrd

Eso nos permitira acceder a las funciones que nos permiten leer desde una excel.

Despues abrimos la excel:

book = xlrd.open_workbook("example.xls")

Con eso ya por ejemplo podemos imprimir el numero de pestañas (hojas de trabajo) que tiene o sus nombres:

print "The number of worksheets is", book.nsheets
print "Worksheet name(s):", book.sheet_names()

Si queremos leer los valores de alguna pestaña, primero la referenciamos, por ejemplo para
acceder a la primera:

sh = book.sheet_by_index(0)

Imprimimos su nombre y el numero de filas y columnas que la componen:

print sh.name, sh.nrows, sh.ncols

Si por ejemplo queremos acceder a la fila=2, columna=0 para recuperar su valor:

print "Cell (2,0) is: ", sh.cell_value(rowx=2, colx=0)

Y por ultimo, podemos recorrer la hoja entera para imprimir todos los valores de sus celdas:

for rx in range(sh.nrows):
print sh.row(rx)

Tercer Ejemplo: Modificar una hoja Excel

El problema de xlrd y xlwt es que no podemos por ejemplo abrir una excel ya creada, editarla y volver a guardarla,
si no que debemos abrir una copia de la excel original, modificarla y entonces ya guardarla con un nuevo nombre,
para todo esto, nos ayuda el ultimo modulo (xlutils).

Ejemplo:

# Ejemplo de modificacion de hoja Excel
from xlrd import open_workbook
from xlutils.copy import copy
rb = open_workbook('example.xls',formatting_info=True)
wb = copy(rb)
ws = wb.get_sheet(0)
ws.write(0,0,"I'm only changing cell A1")
wb.save('example2.xls')

En el ejemplo: hemos abierto una copia de la excel llamada “example.xls”

rb = open_workbook('example.xls',formatting_info=True)
wb = copy(rb)

Accedemos a la primera pestaña de la excel:

ws = wb.get_sheet(0)

Modificamos el valor de una celda:

ws.write(0,0,"I'm only changing cell A1")

Y ya la guardamos con otro nombre.

wb.save('example2.xls')

El efecto es el mismo, es como si hubieramos editado sobre la excel original.

Evidentemente este es un pequeño articulo introductorio y existen muchas mas funciones que nos pueden ser
de mucha utilidad, consultando la documentacion de las librerias podemos obtener mas informacion.

Aun asi dejo un par de enlaces adicionales, para completar la informacion proporcionada:

Enlace | Write Excel files with Python | Excel SpreadSheets and Python | Using python to write to an Excel | xlwt CheatSheet | Python and Excel





¿Es compatible tu equipo con Ubuntu?


( Muchos fondos de pantalla, aqui )

DESCARGATE SCIFI LIFE

365 Dias de Soledad
Me debes los sueños, las promesas y las noches rotas. Me debes la paz, la sonrisa y la esperanza robadas. Me debes la sangre, las lágrimas y el sudor vertido. Me debes las noches vacías, los abrazos anhelados. Me debes un beso de ajenjo de tu amarga boca.

The Ubuntu Counter Project - user number # 11961
Geo Visitors Map
septiembre 2011
L M X J V S D
« Ago   Oct »
 1234
567891011
12131415161718
19202122232425
2627282930  

Blog Stats

  • 30.873.837 hits