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.