Home > python > Python: leggere file Excel con XLRD

Python: leggere file Excel con XLRD

5 Agosto 2010

Traendo spunto da questa utilissima guida

Supponiamo di avere un file test.xls:
xlrd
Per leggerne il contenuto con python, utilizziamo xlrd.

Se non è già installato provvediamo:

pip install xlrd

ora importare il modulo:

import xlrd

aprire il file di excel:

>>> workbook = xlrd.open_workbook(r'\tmp\web\python\test.xlsx')
>>> workbook
<xlrd.book.Book object at 0x030A2DF0>

Per accedere ai nomi dei fogli presenti all’interno del workbook:

>>> workbook.sheet_names()
[u'my_sheet_1', u'my_sheet_2']

Per acedere al contenuto dei fogli, possiamo accedere all’oggetto
foglio, o via ID, o via nome.
Tramite ID:

>>> sheet_1 = workbook.sheet_by_index(0)
>>> sheet_1
<xlrd.sheet.Sheet object at 0x030AA610>
>>> sheet_1.name
u'my_sheet_1'
>>> sheet_2 = workbook.sheet_by_index(1)
>>> sheet_2.name
u'my_sheet_2'

Tramite nome:

>>> sheet_1 = workbook.sheet_by_name('my_sheet_1')
>>> sheet_1.name
u'my_sheet_1'

Per conoscere il numero delle righe non vuote del foglio:

>>> sheet_1.nrows
4

Per stampare i valori presenti in ogni riga:

>>> for row in range(sheet_1.nrows):
	print sheet_1.row_values(row)

[u'ID', u'name']
[1.0, u'abc']
[2.0, u'def']
[3.0, u'xyz']

se volessimo stampare solo i dati di ogni riga, dalla seconda colonna in poi,
potremmo usare l’argomento ‘start_colx’:

>>> for row in range(sheet_1.nrows):
	print sheet_1.row_values(row, start_colx=1)

[u'name']
[u'abc']
[u'def']
[u'xyz']

se volessimo stampare i dati di ogni riga, solo della prima colonna,
potremmo usare l’argomento ‘end_colx’:

>>> for row in range(sheet_1.nrows):
	print sheet_1.row_values(row, end_colx=1)

[u'ID']
[1.0]
[2.0]
[3.0]

Al contrario, per stampare i valori di ogni cella, partendo dall’intera colonna:

>>> for value in sheet_1.col_values(0):
	print value
	
ID
1.0
2.0
3.0

Come nel caso delle righe, possiamo restringere la forbice tramite gli argomenti
start_rowx e end_rowx:

Saltando la prima riga:

>>> for value in sheet_1.col_values(0, start_rowx=1):
	print value

1.0
2.0
3.0

…o escludendo le ultime 2:

>>> for value in sheet_1.col_values(0, end_rowx=2):
	print value

ID
1.0

Per leggere i valori di una singola cella invece, si utilizzano le coordinate della
stessa, sempre partendo a contare da 0.
La Cella A-1 avrà quindi coord. (0,0)

>>> sheet_1.cell_value(0, 0)
u'ID'

>>> for row in range(sheet_1.nrows):
	for col in range(sheet_1.ncols):
		print sheet_1.cell_value(row, col)

ID
name
1.0
abc
2.0
def
3.0
xyz

Scrivere su file Excel con XLWT

Categorie:python Tag:
I commenti sono chiusi.