() translation by (you can also view the original English article)
Credo che tu abbia già usato Excel in qualche occasione. E' uno strumento veramente potente che ti permette di lavorare con fogli di calcolo, tabelle, grafici, ecc.. Ma, cosa puoi farci con Python?
Python è un punto di svolta quando si tratta di lavorare con i files di Excel, è in grado di automatizzare compiti scoraggianti da compiere con Excel. Per esempio, potresti ricercare informazioni in centinaia di fogli di calcolo dei bilanci della società. Molto scoraggiante, non è vero? In questo tutorial vi mosterò come Python può essere usato facilmente per lavorare con i documenti di Excel.
Non preoccuparti se non hai Microsoft Excel installato sul tuo computer Puoi utilizzare LibreOffice Calc e Open Office Calc come alternativa per questo tutorial.
Bene, iniziamo!
OpenPyXL
OpenPyXL
è una libreria usata per leggere e scrivere files xlsx/xlsm/xltx/xltm
di Excel 2010 Questa libreria sarà usata in questo tutorial per lavorare con i documenti di Excel
La prima cosa di cui hai bisogno è installare OpenPyXL
Installare OpenPyXL
per installare OpenPyXL
, useremo pip, come spiegato su Wikipedia:
Il sistema di gestione dei pacchetti usato per installare e gestire i packages scritti in Python Molti pacchetti possono essere trovati in Python Package Index (PyPI).
Puoi seguire i passaggi menzionati nella guida utente del Python Packaging per installare pip
, ma se tu hai Python 2.7.9
o una versione successiva, oppure Python 3.4
o successivo, hai già pip
!
OpenPyXL
può essere facilmente installato digitando il seguente comando (ad esempio nel terminale X di Mac OS, command propt di Windows o nella shell di Linux)
pip install openpyxl
Apri un documento Excel
Dopo aver installato OpenPyXL, sei pronto per lavorare con i documenti di Excel. Il primo compito che andiamo ad effettuare sarà naturalmente quello di aprire quel documento. Proseguiamo e scarichiamo il file di Excel sample.xlsx, questo sarà utilizzato durante il tutorial, ma tu puoi seguirlo usando qualsiasi file di Excel tu voglia.
prima di usare OpenPyXL
, hai bisogno di importarlo (import
), come mostrato di seguito
import openpyxl
Il metodo di cui hai bisogno per aprire il documento Excel è load_workbook()
. Se ti stai chiedendo perchè usiamo workbook, semplicemente perchè è il fogli di lavoro del documento Excel Lo script di cui hai bisogno per aprire un documento di Excel è il seguente:
1 |
import openpyxl |
2 |
excel_document = openpyxl.load_workbook('sample.xlsx') |
Andiamo a vedere il type
(il tipo di dato)restituito dal metodo load_workbook ()
Questo può essere effettuato come segue:
print type(excel_document)
Questo ritornerà quanto seguente:
1 |
<class 'openpyxl.workbook.workbook.Workbook'> |
Come possiamo vedere, l'oggetto ritornato è Workbook
, del tipo di dati workbook
. L'oggetto Workbook rappresenta il file di Excel.
Nomi dei fogli.
I fogli in Excel sono costituiti da colonne (che partono dalla lettera A, poi B, C, ec...) e dalle righe (numerate da 1, a 2, 3, ..). Per verificare quali fogli sono presenti nel nostro documento di Excel, useremo il metodo get_sheet_names ()
come mostrato di seguito:
excel_document.get_sheet_names()
Se eseguiamo il comando print
di sopra, otterremo il seguente risultato:
[u'Sheet1']
Ci mostra che stiamo lavorando con un foglio, chiamato Sheet1
Se avessimo avuto più fogli, puoi accedere ad uno specifico, utilizzando il suo nome, tramite il metodo: get_sheet_by_name()
.
Accedere alle Celle
Adesso che hai imparato come aprire un file di Excel ed al/ai fogli, andiamo a scoprire quant'è facile accedere ad una cella del foglio. Tutto quello che devi fare è caricare il foglio e determinale le coordinate della cella. Mettiamo il caso che dobbiamo accedere alla colonna A
, riga 2
di un documento di Excel, cioè A2
Questo può essere implementato come segue:
1 |
sheet = excel_document.get_sheet_by_name('Sheet1') |
2 |
print sheet['A2'].value |
In questo caso, otterrai il seguente valore di ritorno: Abder
.
Possiamo anche usare la notazione riga-colonna. Per esempio, se vogliamo accedere alla cella della riga 5 colonna 2, digitiamo quanto segue:
sheet.cell(row = 5, column = 2).value
l'output in questo caso sarà: programmer
.
Se volessimo vedere il tipo di oggetto rappresentante la cella, dobbiamo digitare:
print type(sheet['A2'])
oppure:
print sheet.cell(row = 5, column = 2)
In questo caso, potremmo ottenere il seguente output:
<class 'openpyxl.cell.cell.Cell'>
questo significa che l'oggetto è di tipo Cell
.
Accedere ad un range di celle
E se fossimo interessati ad accedere ad un range di celle piuttosto che ad una cella soltanto? Mettiamo che vogliamo accedere alle celle da A1
a B3
, come mostrato, come facciamo con il nostro documento di Excel?



Questo può essere fatto usando il seguente script:
1 |
multiple_cells = sheet['A1':'B3'] |
2 |
for row in multiple_cells: |
3 |
for cell in row: |
4 |
print cell.value |
In questo caso, otterremo il seguente output:
1 |
Name
|
2 |
Profession
|
3 |
Abder
|
4 |
Student
|
5 |
Bob
|
6 |
Engineer
|
Accedere a tutte le righe e tutte le colonne
OpePyXL
ti permette di accedere a tutte le righe e tutte le colonne del tuo documento di Excel, rispettivamente attraverso i metodi rows ()
e columns ()
.
Per accedere a tutte le righe, possiamo procedere come segue:
1 |
all_rows = sheet.rows |
2 |
print all_rows[:] |
Notate che abbiamo usato la notazione [:]
per accedere a tutte le righe. Questo perchè il tipo di oggetto ritornato whole_document
è una tupla (di tipo tuple
)
L'output ritornato dallo script precedente è simile al seguente:
1 |
((<Cell Sheet1.A1>, <Cell Sheet1.B1>), (<Cell Sheet1.A2>, <Cell Sheet1.B2>), (<Cell Sheet1.A3>, <Cell Sheet1.B3>), (<Cell Sheet1.A4>, <Cell Sheet1.B4>), (<Cell Sheet1.A5>, <Cell Sheet1.B5>), (<Cell Sheet1.A6>, <Cell Sheet1.B6>), (<Cell Sheet1.A7>, <Cell Sheet1.B7>)) |
Oppure, se volessimo accedere a tutte le colonne, basta semplicemente fare come segue:
1 |
all_columns = sheet.columns |
2 |
print all_columns[:] |
In questo caso, otterremo il seguente output:
1 |
((<Cell Sheet1.A1>, <Cell Sheet1.A2>, <Cell Sheet1.A3>, <Cell Sheet1.A4>, <Cell Sheet1.A5>, <Cell Sheet1.A6>, <Cell Sheet1.A7>), (<Cell Sheet1.B1>, <Cell Sheet1.B2>, <Cell Sheet1.B3>, <Cell Sheet1.B4>, <Cell Sheet1.B5>, <Cell Sheet1.B6>, <Cell Sheet1.B7>)) |
Possiamo effettuare molte operazioni sui documenti di Excel, basta dare uno sguardo alla documentazione di OpenPyXL
Conclusioni
In questo tutorial, abbiamo scoperto quant'è flessibile Python per lavorare con i documenti di Excel. Ricordi lo scenario menzionato all'inizio del tutorial? Vale la pena provare con un progetto!