Stell dir vor, du hast eine Liste mit Kunden-Daten, eine Auswertung aus einer Excel-Tabelle oder einfach einen Bericht, den du automatisch als Word-Dokument abspeichern willst. Kein Kopieren und Einfügen mehr. Kein manuelles Öffnen von Microsoft Word. Stattdessen: Ein paar Zeilen Python-Code, und schon steht die Datei fertig auf deinem Desktop. Ja, Python kann Dateien in Word schreiben - und das ziemlich einfach.
Wie funktioniert das eigentlich?
Python selbst kann nicht direkt mit .doc- oder .docx-Dateien umgehen. Das ist kein Bug, sondern eine technische Einschränkung. Microsoft Word nutzt ein komplexes, proprietäres Format. Aber Python hat starke Bibliotheken, die genau das für dich übersetzen: python-docx ist die wichtigste davon. Sie spricht das moderne .docx-Format an - das seit 2007 von Microsoft verwendet wird - und macht es möglich, Texte, Tabellen, Überschriften und sogar Bilder in Word zu schreiben, ohne Word selbst zu öffnen.
Die alte .doc-Datei (von Word 2003 und früher) wird von python-docx nicht unterstützt. Wenn du unbedingt .doc brauchst, musst du die Datei erst als .docx erstellen und dann mit einem anderen Tool konvertieren. Aber für fast alle Fälle reicht .docx völlig aus. Es ist modern, kompatibel mit Google Docs, LibreOffice und sogar mit älteren Word-Versionen, wenn sie Updates haben.
Installation: Alles, was du brauchst
Bevor du loslegst, musst du die Bibliothek installieren. Öffne dein Terminal oder deine Kommandozeile und gib ein:
- pip install python-docx
Das ist alles. Keine komplizierten Installationen, keine Registry-Eingriffe, keine Abhängigkeiten von Microsoft Office. Python-docx arbeitet direkt mit dem XML-Format hinter .docx. Du brauchst also nicht einmal Word auf deinem Rechner zu haben. Das funktioniert auf Windows, Mac und Linux gleichermaßen.
Erstelle dein erstes Word-Dokument
Hier ist ein einfaches Beispiel, das ein neues Word-Dokument erstellt, einen Titel hinzufügt und einen Absatz schreibt:
from docx import Document
# Neues Dokument erstellen
doc = Document()
# Titel hinzufügen
doc.add_heading('Mein erster Word-Bericht', 0)
# Absatz hinzufügen
doc.add_paragraph('Dieser Text wurde mit Python generiert.')
# Speichern
doc.save('mein_bericht.docx')
Wenn du das ausführst, erscheint eine Datei namens mein_bericht.docx im gleichen Ordner wie dein Python-Skript. Öffne sie - sie sieht aus wie ein normales Word-Dokument. Kein Unterschied. Nur dass du sie nicht mit der Maus erstellt hast, sondern mit Code.
Was kannst du noch schreiben?
python-docx ist weit mehr als nur ein Text-Schreiber. Hier sind die wichtigsten Funktionen:
- Überschriften: Mit
add_heading('Text', 1)für Hauptüberschrift,add_heading('Text', 2)für Untertitel usw. Die Zahl bestimmt die Hierarchie. - Listen: Du kannst Aufzählungs- und nummerierte Listen erstellen.
doc.add_paragraph('Punkt 1', style='List Bullet')oderstyle='List Number'. - Tabellen:
table = doc.add_table(rows=3, cols=2)erstellt eine 3x2-Tabelle. Dann fügst du Zellen mittable.cell(0,0).text = 'Zelle 1'hinzu. - Fette und kursiv formatierte Texte: Du kannst Teile eines Absatzes hervorheben. Beispiel:
p = doc.add_paragraph(); run = p.add_run('fett'); run.bold = True. - Bilder:
doc.add_picture('logo.png', width=Inches(1.5))fügt ein Bild ein. Unterstützt PNG, JPG, GIF. - Seitenlayout: Du kannst Seitenränder, Papiergröße oder Orientierung ändern - aber das ist etwas fortgeschrittener.
Stell dir vor, du hast eine CSV-Datei mit 1.000 Kunden und willst für jeden eine individuelle Rechnung als Word-Dokument erstellen. Mit einer Schleife und python-docx kannst du das in unter einer Minute erledigen. Kein manuelles Kopieren, kein Risiko von Tippfehlern.
Ein echtes Beispiel: Automatische Rechnungserstellung
Hier ist ein praktisches Szenario: Du hast eine Liste von Kunden, die du monatlich abrechnest. Die Daten liegen in einer CSV-Datei:
Kundenname,Produkt,Betrag
Max Mustermann,Webdesign,299
Anna Schmidt,Hosting,89
Peter Weber,Webdesign,299
Dein Python-Skript liest diese Datei und erstellt für jeden Kunden eine separate Rechnung:
import csv
from docx import Document
# CSV-Datei einlesen
with open('kunden.csv', newline='', encoding='utf-8') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
doc = Document()
doc.add_heading('Rechnung', 0)
doc.add_paragraph(f'An: {row["Kundenname"]}')
doc.add_paragraph(f'Leistung: {row["Produkt"]}')
doc.add_paragraph(f'Betrag: {row["Betrag"]} €')
doc.add_paragraph('\nVielen Dank für Ihre Auftrag!')
doc.save(f'Rechnung_{row["Kundenname"]}.docx')
Das Ergebnis? Drei separate Word-Dateien: Rechnung_Max Mustermann.docx, Rechnung_Anna Schmidt.docx und Rechnung_Peter Weber.docx. Jede mit korrektem Namen, Produkt und Betrag. Und das alles automatisch. Kein Mensch hat etwas manuell eingegeben.
Was geht nicht?
Python-docx ist stark, aber nicht allmächtig. Hier sind die Grenzen:
- Keine Formeln: Du kannst keine Excel-ähnlichen Berechnungen in Tabellen einfügen. Die Werte müssen vorher berechnet sein.
- Keine Header/Footer mit dynamischen Inhalten: Seitenzahlen oder Datum in der Kopf- oder Fußzeile kannst du setzen, aber nicht automatisch aktualisieren.
- Kein Tracking von Änderungen: Die Funktion "Änderungen verfolgen" aus Word kannst du nicht über Python aktivieren.
- Keine komplexe Formatierung: Keine Spalten, keine Textumfluss, keine komplexen Layouts wie in InDesign.
Das sind keine Mängel - das sind Designentscheidungen. Python-docx ist für strukturierte, automatisierte Dokumente gedacht, nicht für Design-Profis. Wenn du komplexe Layouts brauchst, ist PDF mit ReportLab oder WeasyPrint die bessere Wahl.
Warum das alles nützt
Warum sollte jemand Python nutzen, um Word-Dokumente zu erstellen, statt einfach Word zu öffnen? Weil Automatisierung Zeit spart - und Fehler reduziert.
Stell dir vor, du arbeitest in einer Behörde, einem Krankenhaus oder einem Beratungsunternehmen. Jeden Monat musst du hunderte Briefe, Berichte oder Bestätigungen versenden. Jeder Brief ist leicht anders: Name, Adresse, Betrag, Datum. Wenn du das manuell machst, verlierst du Stunden. Und du machst Fehler - ein Tippfehler in der Adresse, ein falscher Betrag. Mit Python wird das zur Routine. Du startest das Skript, es läuft über Nacht, und am Morgen hast du 300 perfekt formatierte Dokumente - alle korrekt, alle gleich, alle bereit zum Drucken oder Versenden.
Das ist nicht Science-Fiction. Das machen Tausende Unternehmen heute. In der Finanzbranche, im Personalwesen, in der Forschung - überall dort, wo Dokumente wiederholt werden, aber immer leicht variieren.
Was kommt als Nächstes?
Wenn du mit python-docx vertraut bist, kannst du dich als nächstes mit anderen Formaten beschäftigen:
- PDF erstellen: Mit ReportLab oder PyPDF2 - ideal für offizielle Dokumente.
- Excel schreiben: Mit openpyxl - perfekt für Datenanalysen.
- E-Mails versenden: Mit smtplib - kombiniere Word-Dokumente mit automatischen E-Mail-Versand.
Python wird immer dann mächtig, wenn du mehrere Werkzeuge zusammenbringst. Ein Skript, das Daten aus einer Datenbank holt, eine Word-Rechnung erstellt und sie per E-Mail versendet - das ist kein Traum. Das ist Standard in modernen Arbeitsabläufen.
Kann Python auch alte .doc-Dateien schreiben?
Nein, die Bibliothek python-docx unterstützt nur das moderne .docx-Format. Wenn du unbedingt .doc brauchst, musst du die Datei erst als .docx erstellen und dann mit einem Konvertierungstool wie LibreOffice oder einem Online-Konverter umwandeln. Für die meisten Zwecke ist .docx jedoch besser: kompatibler, kleiner und sicherer.
Brauche ich Microsoft Word installiert, um Python-Word-Dateien zu erstellen?
Nein, du brauchst Microsoft Word nicht installiert. Python-docx erstellt die Datei direkt im .docx-Format, das aus XML-Daten besteht. Du kannst die Datei mit jedem Programm öffnen, das .docx unterstützt - das sind LibreOffice, Google Docs, Apple Pages und sogar ältere Word-Versionen, wenn sie Updates haben.
Kann ich Bilder und Tabellen in das Word-Dokument einfügen?
Ja, das ist möglich. Mit doc.add_picture('bild.jpg') fügst du ein Bild ein. Mit doc.add_table(Anzahl_Reihen, Anzahl_Spalten) erstellst du eine Tabelle. Du kannst Zellen mit Text füllen, Zellfarben ändern und sogar Tabellenüberschriften hinzufügen. Das funktioniert zuverlässig und ist in der Praxis sehr nützlich.
Ist python-docx sicher? Kann es Viren enthalten?
python-docx selbst ist ein reiner Python-Code und enthält keine Viren. Die erstellten .docx-Dateien sind ebenfalls sicher - sie enthalten nur Text, Tabellen und Bilder, die du selbst hinzugefügt hast. Solange du keine ausführbaren Makros oder Skripte in das Dokument einfügst (was python-docx gar nicht kann), ist das Format sicher. Es ist kein Risiko, wie bei alten .doc-Dateien mit VBA-Makros.
Wie vergleicht sich Python mit Word-Makros?
Word-Makros (VBA) funktionieren nur innerhalb von Microsoft Word und sind schwer zu debuggen. Python-Skripte laufen unabhängig, sind leichter zu testen, können Daten aus anderen Quellen (Datenbanken, APIs, CSV) holen und auf jedem Computer laufen - auch ohne Word. Python ist flexibler, besser dokumentiert und eignet sich besser für Automatisierung über mehrere Systeme hinweg.
Wie lange dauert es, ein Word-Dokument mit Python zu erstellen?
Ein einfaches Dokument mit ein paar Absätzen und einer Tabelle dauert weniger als eine Sekunde. Selbst bei 1.000 Dokumenten braucht das Skript meist weniger als 30 Sekunden - je nach Rechnerleistung. Das ist schneller, als wenn du es manuell machst, und viel zuverlässiger.