Lecture libre, sans compteChapitre 3 · Automatiser le traitement de tableurs

Manipuler des fichiers Excel avec openpyxl

Introduction

Mise en situation

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

python
1# Dans un terminal, installez la bibliothèque avec pip
2pip install openpyxl

Structure 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), comme A1, B3, C12.

Ouvrir un fichier Excel existant

python
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

python
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

python
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

python
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érationMéthode openpyxlExemple
Ouvrir un fichierload_workbook()load_workbook("stock.xlsx")
Créer un fichierWorkbook()Workbook()
Sélectionner une feuille.active ou classeur["Nom"]classeur["Rapport"]
Lire une cellulefeuille["A1"].valuefeuille["A1"].value
Écrire une cellulefeuille["A1"] = valeurfeuille["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 utiliser row= et column= avec des chiffres pour les deux.

⚠️ Attention : openpyxl fonctionne uniquement avec les fichiers .xlsx (Excel 2007+). Les anciens fichiers .xls nécessitent une autre bibliothèque comme xlrd.

Mini-quiz

Mini-Quiz
Question 1 / 3

Quelle fonction permet d'ouvrir un fichier Excel existant avec openpyxl ?

En bref

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.