HOWTO · Python

Python in eine Excel-Tabelle schreiben

Lernen Sie, Tabellendaten und Zellen mit pandas und openpyxl in eine .xlsx-Arbeitsmappe zu schreiben und die Ausgabe zu prüfen.

Auf dieser Seite

Python kann Excel-Arbeitsmappen aus einem pandas DataFrame erstellen oder einzelne Zellen mit openpyxl setzen. pandas eignet sich für Tabellen, openpyxl für direkte Arbeitsmappensteuerung und XlsxWriter für Formatierungen.

Einen DataFrame mit pandas in eine .xlsx-Datei schreiben

Die pandas-Methode DataFrame.to_excel() erstellt eine .xlsx-Datei, schreibt Zeilen und Spalten und erlaubt die Auswahl des Tabellenblatts.

Das Beispiel schreibt eine Tabelle und liest sie zur Prüfung wieder ein. Installieren Sie pandas und openpyxl vor dem Start.

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"))

Die Ausgabe enthält Notebook und Pen. Setzen Sie index=False, wenn der Index keine Datenspalte ist; getrennte Listen müssen gleich lang sein.

Mehrere Tabellenblätter mit ExcelWriter schreiben

Mit pd.ExcelWriter können mehrere DataFrames in separate Arbeitsblätter einer Arbeitsmappe geschrieben werden. Verschiedene sheet_name-Werte bestimmen die Tabellenblätter, und der Kontextmanager schließt den 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)

Die Ausgabe lautet Sales und Returns. Der Kontextmanager verhindert, dass ein offener Writer die Datei beschädigt.

Zellen mit openpyxl schreiben

openpyxl ist passend, wenn die Eingabe kein DataFrame ist oder Zellen und Tabellenblätter direkt bearbeitet werden sollen. Werte können gesetzt, Zeilen angehängt und Dateien gespeichert werden.

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)

Die Ausgabe lautet Notebook 3. Mit cell(row, column) lassen sich numerische Positionen ebenfalls verwenden.

pandas, openpyxl oder XlsxWriter auswählen

Wählen Sie pandas für Tabellendaten und kurze Exporte. Verwenden Sie openpyxl für bestehende Arbeitsmappen, Zellen, Formeln und Tabellenblätter; beide unterstützen das moderne .xlsx-Format.

XlsxWriter eignet sich für neue formatierte Arbeitsmappen. xlwt ist nur für ausdrücklich verlangte alte .xls-Dateien geeignet.

Halten Sie Dateiendung, Bibliothek und Engine konsistent; ein geschlossener Writer kann nicht nachträglich bearbeitet werden.

Arbeitsmappe prüfen und häufige Fehler behandeln

Prüfen Sie nach dem Schreiben den Pfad und die Lesbarkeit der Arbeitsmappe. Eine fehlende Datei weist meist auf einen nicht ausgeführten Export, einen Fehler vor dem Speichern oder ein anderes Arbeitsverzeichnis hin.

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)

Die Grenzprüfung löst FileNotFoundError aus, bis missing.xlsx existiert. Prüfen Sie in automatisierten Abläufen zusätzlich Blattnamen und Zellwerte.