Persistance des données - Module Openpyxl

Microsoft Excel est l'application de feuille de calcul la plus populaire. Il est utilisé depuis plus de 25 ans. Les versions ultérieures d'Excel utilisentOffice Open XML (OOXML) format de fichier. Par conséquent, il a été possible d'accéder aux fichiers de feuilles de calcul via d'autres environnements de programmation.

OOXMLest un format de fichier standard ECMA. Pythonopenpyxl package fournit des fonctionnalités pour lire / écrire des fichiers Excel avec l'extension .xlsx.

Le package openpyxl utilise une nomenclature de classe similaire à la terminologie Microsoft Excel. Un document Excel est appelé comme classeur et est enregistré avec l'extension .xlsx dans le système de fichiers. Un classeur peut avoir plusieurs feuilles de calcul. Une feuille de calcul présente une grande grille de cellules, chacune d'elles pouvant stocker une valeur ou une formule. Les lignes et les colonnes qui forment la grille sont numérotées. Les colonnes sont identifiées par des alphabets, A, B, C,…., Z, AA, AB, etc. Les lignes sont numérotées à partir de 1.

Une feuille de calcul Excel typique apparaît comme suit -

L'utilitaire pip est assez bon pour installer le package openpyxl.

pip install openpyxl

La classe Workbook représente un classeur vide avec une feuille de calcul vierge. Nous devons l'activer pour que certaines données puissent être ajoutées à la feuille de calcul.

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

Comme nous le savons, une cellule dans la feuille de calcul est nommée au format ColumnNameRownumber. En conséquence, la cellule supérieure gauche est A1. Nous attribuons une chaîne à cette cellule comme -

sheet1['A1']= 'Student List'

Sinon, utilisez la feuille de calcul cell()méthode qui utilise le numéro de ligne et de colonne pour identifier une cellule. Appelez la propriété value à l'objet cellule pour attribuer une valeur.

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

Après avoir rempli la feuille de calcul avec des données, le classeur est enregistré en appelant la méthode save () de l'objet classeur.

wb.save('Student.xlsx')

Ce fichier de classeur est créé dans le répertoire de travail actuel.

Le script Python suivant écrit une liste de tuples dans un document de classeur. Chaque tuple stocke le numéro de rouleau, l'âge et les notes de l'élève.

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')

Le classeur student.xlsx est enregistré dans le répertoire de travail actuel. S'il est ouvert à l'aide de l'application Excel, il apparaît comme ci-dessous -

Le module openpyxl propose load_workbook() fonction qui aide à lire les données dans le document de classeur.

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

Vous pouvez désormais accéder à la valeur de n'importe quelle cellule spécifiée par le numéro de ligne et de colonne.

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

Exemple

Le code suivant remplit une liste avec des données de feuille de travail.

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)

Production

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

Une caractéristique très importante de l'application Excel est la formule. Pour attribuer une formule à une cellule, affectez-la à une chaîne contenant la syntaxe de formule d'Excel. Attribuez la fonction MOYENNE à la cellule c6 ayant l'âge.

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

Le module Openpyxl a Translate_formula()pour copier la formule sur une plage. Le programme suivant définit la fonction MOYENNE dans C6 et la copie dans C7 qui calcule la moyenne des notes.

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')

La feuille de calcul modifiée apparaît maintenant comme suit -