HOWTO · Python
Écrire dans une feuille Excel avec Python
Apprenez à écrire des tableaux et des cellules avec pandas et openpyxl dans un classeur .xlsx, puis à vérifier le fichier exporté.
Sur cette page
Python peut créer un classeur depuis un DataFrame pandas ou affecter des cellules avec openpyxl. Utilisez pandas pour les tableaux, openpyxl pour le contrôle direct et XlsxWriter pour le formatage.
Écrire un DataFrame dans un fichier .xlsx avec pandas
La méthode DataFrame.to_excel() de pandas crée un fichier .xlsx, écrit les lignes et les colonnes et permet de choisir la feuille.
L’exemple écrit un tableau puis le relit pour le vérifier. Installez pandas et openpyxl avant de l’exécuter.
import pandas as pd
sales = pd.DataFrame({"Product": ["Notebook", "Pen"], "Units": [3, 8]})
sales.to_excel("sales.xlsx", sheet_name="Sales", index=False)
saved = pd.read_excel("sales.xlsx", sheet_name="Sales")
print(saved.to_dict(orient="records"))
La sortie contient Notebook et Pen. Utilisez index=False si l’index n’est pas une colonne; les listes doivent avoir la même longueur.
Écrire plusieurs feuilles avec ExcelWriter
pd.ExcelWriter permet d’écrire plusieurs DataFrame dans un classeur. Donnez un sheet_name différent et laissez le gestionnaire de contexte fermer le writer.
import pandas as pd
sales = pd.DataFrame({"Product": ["Notebook", "Pen"], "Units": [3, 8]})
returns = pd.DataFrame({"Product": ["Pen"], "Units": [1]})
with pd.ExcelWriter("report.xlsx", engine="openpyxl") as writer:
sales.to_excel(writer, sheet_name="Sales", index=False)
returns.to_excel(writer, sheet_name="Returns", index=False)
print(pd.ExcelFile("report.xlsx").sheet_names)
La sortie contient Sales et Returns. Le gestionnaire évite de laisser un writer ouvert.
Écrire des cellules avec openpyxl
openpyxl convient si l’entrée n’est pas un DataFrame ou si vous devez modifier directement feuilles et cellules. Affectez des valeurs, ajoutez des lignes et enregistrez.
from openpyxl import Workbook, load_workbook
workbook = Workbook()
sheet = workbook.active
sheet.title = "Summary"
sheet["A1"] = "Product"
sheet["B1"] = "Units"
sheet.append(["Notebook", 3])
workbook.save("summary.xlsx")
saved = load_workbook("summary.xlsx", data_only=True)
print(saved["Summary"]["A2"].value, saved["Summary"]["B2"].value)
La sortie est Notebook 3. La méthode cell(row, column) accepte aussi des positions numériques.
Choisir pandas, openpyxl ou XlsxWriter
Choisissez pandas pour les tableaux et les exports courts. Utilisez openpyxl pour les classeurs existants, les cellules, les formules et les feuilles; les deux produisent .xlsx.
XlsxWriter convient aux nouveaux classeurs formatés. xlwt est réservé aux anciens fichiers .xls explicitement requis.
Gardez l’extension, la bibliothèque et le moteur cohérents; un writer fermé ne peut plus être modifié.
Vérifier le classeur et traiter les erreurs courantes
Après l’écriture, vérifiez le chemin et l’ouverture du classeur. Une sortie absente indique souvent un export non exécuté, un échec avant l’enregistrement ou un autre répertoire.
from pathlib import Path
output = Path("missing.xlsx")
if not output.exists():
raise FileNotFoundError(f"Expected export was not created: {output}")
print(output.suffix, output.stat().st_size > 0)
Cette vérification lève FileNotFoundError jusqu’à la création de missing.xlsx. Vérifiez aussi feuilles et cellules dans un pipeline.