Lire et écrire dans un fichier XLS avec Python
jeudi 18 avril 2013 à 20:49< Insérer ici vous-même troll sur Microsoft et LibreOffice et les formats >
Puis, une fois cette corvée administrative remplie, faites un pip install:
pip install xlutils
Ceci va installer deux lib dont on va avoir besoin : xlrd pour la lecture, et xlwt pour l’écriture.
Ensuite c’est très simple…
Pour écrire dans un fichier Excel :
import xlrd from xlwt import Workbook, Formula path = r"C:\chemin\vers\fichier.xls" # On créer un "classeur" classeur = Workbook() # On ajoute une feuille au classeur feuille = classeur.add_sheet("OCB") # Ecrire "1" dans la cellule à la ligne 0 et la colonne 0 feuille.write(0, 0, 1) # Ecrire "2" dans la cellule à la ligne 0 et la colonne 1 feuille.write(0, 1, 2) # Ecrire une formule dans la cellule à la ligne 0 et la colonne 2 # qui va additioner les deux autres cellules feuille.write(0, 2, Formula('A1+B1')) # Ecriture du classeur sur le disque classeur.save(path) print u"Fichier créé: {}".format(path) ## Fichier créé: C:\chemin\vers\fichier.xls workbook.save(path)
Ce qui nous pond un truc comme ça.
Et pour lire ce même fichier :
import xlrd # Réouverture du classeur classeur = xlrd.open_workbook(path) # Récupération du nom de toutes les feuilles sous forme de liste nom_des_feuilles = classeur.sheet_names() # Récupération de la première feuille feuille = classeur.sheet_by_name(nom_des_feuilles[0]) print u"Lecture des cellules:" print "A1: {}".format(feuille.cell_value(0, 0)) print "B1: {}".format(feuille.cell_value(0, 1)) # On ne peut pas lire les les valeurs des cellules avec formules print "C1: {}".format(feuille.cell_value(0, 2)) ## Lecture des cellules: ## A1: 1.0 ## B1: 2.0 ## C1:
Comme vous pouvez le voir à la dernière ligne, lire une cellule avec une formule ne revoit rien. L’auteur de la lib explique en effet que les formules sont stockées sous forme de bytecode et qu’il faudrait les décompiler pour obtenir le texte original.
Il existe d’autres manières d’accéder à des fichiers XLS, puis puissantes mais aussi beaucoup plus contraignantes :
- Manipuler Office directement via l’API COM: Windows uniquement, et nécessite d’avoir le logiciel installé.
- Manipuler Open Office via l’API UNO, qui demande aussi d’avoir la suite bureautique installée.