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.