Manipuler des fichiers Excel avec openpyxl
Introduction
Vous travaillez comme assistant administratif chez 'Fournitures Express'. Chaque semaine, votre responsable vous envoie un fichier Excel 'stock.xlsx' contenant l'inventaire des produits, et vous devez mettre à jour manuellement les quantités et créer un rapport de synthèse.
Votre défi
Ce travail répétitif vous prend 1 heure chaque semaine. Pouvez-vous automatiser la lecture, la modification et la création de nouvelles feuilles dans ce fichier Excel avec Python ?
Excel est l'un des outils les plus utilisés en entreprise. Savoir l'automatiser avec Python représente un gain de temps énorme. La bibliothèque openpyxl est l'outil de référence pour lire, écrire et modifier des fichiers .xlsx en Python.
Qu'est-ce qu'openpyxl ?
openpyxl est une bibliothèque Python qui permet de :
- 📖 Lire des fichiers Excel existants
- ✏️ Modifier des cellules
- 📄 Créer de nouvelles feuilles (onglets)
- 💾 Sauvegarder le fichier final
Installation
1# Dans un terminal, installez la bibliothèque avec pip
2pip install openpyxlStructure d'un fichier Excel
Avant de coder, comprenons comment openpyxl "voit" un fichier Excel :
💡 À retenir : Un fichier Excel (
Workbook) contient une ou plusieurs feuilles (Worksheet), et chaque feuille est composée de cellules identifiées par une colonne (lettre) et une ligne (numéro), commeA1,B3,C12.
Ouvrir un fichier Excel existant
1from openpyxl import load_workbook
2
3# Charger un fichier Excel existant
4classeur = load_workbook("stock.xlsx")
5
6# Sélectionner la feuille active (celle ouverte par défaut)
7feuille = classeur.active
8
9# Afficher le nom de la feuille
10print(feuille.title) # Exemple : "Feuille1"Lire des cellules
1# Lire une cellule précise
2valeur = feuille["A1"].value
3print(valeur) # Exemple : "Produit"
4
5# Lire par ligne et colonne (row, column)
6valeur2 = feuille.cell(row=1, column=2).value
7print(valeur2) # Exemple : "Quantité"
8
9# Parcourir toutes les lignes d'une feuille
10for ligne in feuille.iter_rows(values_only=True):
11 print(ligne)
12# Résultat : ('Produit', 'Quantité'), ('Stylo', 120), ('Cahier', 45)...Modifier des valeurs
1from openpyxl import load_workbook
2
3classeur = load_workbook("stock.xlsx")
4feuille = classeur.active
5
6# Modifier une cellule directement
7feuille["B2"] = 200 # Nouvelle quantité pour le produit ligne 2
8
9# Ou via row/column
10feuille.cell(row=3, column=2, value=75)
11
12# ⚠️ Important : il faut sauvegarder pour appliquer les changements !
13classeur.save("stock.xlsx")⚠️ Attention : Si vous oubliez
classeur.save(), toutes vos modifications seront perdues ! De plus, sauvegarder écrase le fichier original — pensez à faire une copie de sauvegarde si besoin.
Créer une nouvelle feuille
1from openpyxl import load_workbook
2
3classeur = load_workbook("stock.xlsx")
4
5# Créer une nouvelle feuille nommée "Rapport"
6nouvelle_feuille = classeur.create_sheet("Rapport")
7
8# Ajouter des en-têtes
9nouvelle_feuille["A1"] = "Résumé"
10nouvelle_feuille["A2"] = "Total produits"
11nouvelle_feuille["B2"] = 3
12
13# Sauvegarder le fichier avec la nouvelle feuille
14classeur.save("stock.xlsx")
15
16print(classeur.sheetnames) # ['Feuille1', 'Rapport']Vue d'ensemble des opérations courantes
| Opération | Méthode openpyxl | Exemple |
|---|---|---|
| Ouvrir un fichier | load_workbook() | load_workbook("stock.xlsx") |
| Créer un fichier | Workbook() | Workbook() |
| Sélectionner une feuille | .active ou classeur["Nom"] | classeur["Rapport"] |
| Lire une cellule | feuille["A1"].value | feuille["A1"].value |
| Écrire une cellule | feuille["A1"] = valeur | feuille["A1"] = "Bonjour" |
| Créer une feuille | .create_sheet("Nom") | classeur.create_sheet("Bilan") |
| Sauvegarder | .save("fichier.xlsx") | classeur.save("stock.xlsx") |
Processus complet d'automatisation
Exemple interactif : simuler la mise à jour d'un stock
Simulateur de mise à jour de stock
Entrez une quantité initiale et une quantité vendue pour voir le nouveau stock, comme le ferait votre script Python avec openpyxl.
Le saviez-vous ?
Le saviez-vous ?
openpyxl ne peut pas exécuter les formules Excel (comme =SOMME()) ! Il lit uniquement le résultat mis en cache lors du dernier enregistrement du fichier par Excel. Pour calculer réellement des formules en Python, il faut utiliser une autre bibliothèque comme 'formulas' ou recalculer manuellement.
— Documentation officielle openpyxl
Points clés à retenir
🎯 En pratique : Un workflow typique est :
load_workbook()→ lire ou modifier les cellules →create_sheet()si besoin →save(). C'est la base de 90% des scripts d'automatisation Excel.
💡 À retenir : Les cellules se réfèrent toujours par colonne (lettre) puis ligne (numéro), par exemple
A1,C5. On peut aussi utiliserrow=etcolumn=avec des chiffres pour les deux.
⚠️ Attention : openpyxl fonctionne uniquement avec les fichiers
.xlsx(Excel 2007+). Les anciens fichiers.xlsnécessitent une autre bibliothèque commexlrd.
Mini-quiz
Quelle fonction permet d'ouvrir un fichier Excel existant avec openpyxl ?
En bref
- 1openpyxl permet d'ouvrir, lire, modifier et créer des feuilles dans des fichiers Excel .xlsx directement depuis Python.
- 2Le workflow de base est : load_workbook() pour ouvrir, feuille['A1'] pour lire/écrire, create_sheet() pour ajouter un onglet, puis .save() pour enregistrer.
- 3N'oubliez jamais d'appeler .save() après vos modifications, sinon elles ne seront pas conservées dans le fichier.