Persistenza dei dati - Modulo Openpyxl

Microsoft Excel è l'applicazione per fogli di calcolo più popolare. È in uso da oltre 25 anni. Le versioni successive di Excel utilizzanoOffice Open XML Formato di file (OOXML). Quindi, è stato possibile accedere ai file del foglio di calcolo tramite altri ambienti di programmazione.

OOXMLè un formato di file standard ECMA. Python'sopenpyxl pacchetto fornisce funzionalità per leggere / scrivere file Excel con estensione .xlsx.

Il pacchetto openpyxl utilizza una nomenclatura di classe simile alla terminologia di Microsoft Excel. Un documento Excel viene chiamato cartella di lavoro e viene salvato con estensione .xlsx nel file system. Una cartella di lavoro può avere più fogli di lavoro. Un foglio di lavoro presenta una grande griglia di celle, ognuna di esse può memorizzare valore o formula. Le righe e le colonne che formano la griglia sono numerate. Le colonne sono identificate da alfabeti, A, B, C,…., Z, AA, AB e così via. Le righe sono numerate a partire da 1.

Un tipico foglio di lavoro di Excel viene visualizzato come segue:

L'utility pip è abbastanza buona per installare il pacchetto openpyxl.

pip install openpyxl

La classe Workbook rappresenta una cartella di lavoro vuota con un foglio di lavoro vuoto. Dobbiamo attivarlo in modo che alcuni dati possano essere aggiunti al foglio di lavoro.

from openpyxl import Workbook
wb=Workbook()
sheet1=wb.active
sheet1.title='StudentList'

Come sappiamo, una cella nel foglio di lavoro è denominata come formato ColumnNameRownumber. Di conseguenza, la cella in alto a sinistra è A1. Assegniamo una stringa a questa cella come -

sheet1['A1']= 'Student List'

In alternativa, usa il foglio di lavoro cell()metodo che utilizza il numero di riga e colonna per identificare una cella. Chiama la proprietà value all'oggetto cella per assegnare un valore.

cell1=sheet1.cell(row=1, column=1)
cell1.value='Student List'

Dopo aver popolato il foglio di lavoro con i dati, la cartella di lavoro viene salvata chiamando il metodo save () dell'oggetto cartella di lavoro.

wb.save('Student.xlsx')

Questo file della cartella di lavoro viene creato nella directory di lavoro corrente.

Il seguente script Python scrive un elenco di tuple in un documento della cartella di lavoro. Ogni tupla memorizza il numero del rotolo, l'età e i voti degli studenti.

from openpyxl import Workbook
wb = Workbook()
sheet1 = wb.active
sheet1.title='Student List'
sheet1.cell(column=1, row=1).value='Student List'
studentlist=[('RollNo','Name', 'age', 'marks'),(1,'Juhi',20,100), 
   (2,'dilip',20, 110) , (3,'jeevan',24,145)]
for col in range(1,5):
   for row in range(1,5):
      sheet1.cell(column=col, row=1+row).value=studentlist[row-1][col-1]
wb.save('students.xlsx')

La cartella di lavoro students.xlsx viene salvata nella directory di lavoro corrente. Se aperto utilizzando l'applicazione Excel, appare come di seguito:

Il modulo openpyxl offre load_workbook() funzione che aiuta a leggere i dati nel documento della cartella di lavoro.

from openpyxl import load_workbook
wb=load_workbook('students.xlsx')

È ora possibile accedere al valore di qualsiasi cella specificata dal numero di riga e colonna.

cell1=sheet1.cell(row=1, column=1)
print (cell1.value)
Student List

Esempio

Il codice seguente popola un elenco con i dati del foglio di lavoro.

from openpyxl import load_workbook
wb=load_workbook('students.xlsx')
sheet1 = wb['Student List']
studentlist=[]
for row in range(1,5):
   stud=[]
for col in range(1,5):
   val=sheet1.cell(column=col, row=1+row).value
stud.append(val)
studentlist.append(tuple(stud))
print (studentlist)

Produzione

[('RollNo', 'Name', 'age', 'marks'), (1, 'Juhi', 20, 100), (2, 'dilip', 20, 110), (3, 'jeevan', 24, 145)]

Una caratteristica molto importante dell'applicazione Excel è la formula. Per assegnare una formula a una cella, assegnala a una stringa contenente la sintassi della formula di Excel. Assegna la funzione MEDIA alla cella c6 con età.

sheet1['C6']= 'AVERAGE(C3:C5)'

Il modulo Openpyxl ha Translate_formula()funzione per copiare la formula in un intervallo. Il seguente programma definisce la funzione MEDIA in C6 e la copia in C7 che calcola la media dei voti.

from openpyxl import load_workbook
wb=load_workbook('students.xlsx')

sheet1 = wb['Student List']
from openpyxl.formula.translate import Translator#copy formula
sheet1['B6']='Average'
sheet1['C6']='=AVERAGE(C3:C5)'
sheet1['D6'] = Translator('=AVERAGE(C3:C5)', origin="C6").translate_formula("D6")
wb.save('students.xlsx')

Il foglio di lavoro modificato ora appare come segue: