Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Gartenautomation
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Deutsch
  • English
Menu

erstellen von Microsoft Excel Mappen mit Python3 und XlsxWriter

Posted on 16. Juni 20201. Mai 2023 by Stefan Draeger

In diesem Beitrag möchte ich dir zeigen wie einfach es ist mit Python3 und der Bibliothek Xlsxwriter eine Microsoft Excel Mappe zu erstellen.

Für ein aktuelles Projekt mit Python3 habe ich ein gutes und vor allem einfaches Framework gesucht um eine Microsoft Excel Mappe in Python zu generieren. Mein hauptaugenmerk lag dabei darauf das dieses einfach zu verwenden ist und dabei bin ich an dem Xlsxwriter hängen geblieben.

Die offizielle Dokumentation zu dieser Bibliothek findest du unter https://xlsxwriter.readthedocs.io/ und den Download der Bibliothek unter https://github.com/jmcnamara/XlsxWriter, jedoch ist die Dokumentation nur in englischer Sprache verfügbar.

  • Installation & Konfiguration
    • Testen der Installation
  • Beispiele
    • Beispiel 1 – erstellen einer Mappe
    • Beispiel 2 – schreiben von Daten in eine Tabelle
    • Beispiel 3 – Zellenformatierungen
    • Beispiel 4 – Diagramme
  • Ausblick & Abschluß

Installation & Konfiguration

Da ich zum schreiben meiner Skripte / Programme Anaconda verwende brauchte ich diese Bibliothek nicht extra installieren, wenn du jedoch Python3 in einem anderen Editor verwendest so musst du diese Bibliothek ggf. vorher installieren.

Um die Bibliothek XlsxWriter zu installieren, öffnen wir die Kommandozeile und geben den Befehl:

pip install XlsxWriter

ein und bestätigen dieses mit der Enter Taste.

Es wird nun das Paket aus dem Internet geladen und installiert.

Installieren von der Bibliothek XlsxWriter auf der Kommandozeile
Installieren von der Bibliothek XlsxWriter auf der Kommandozeile

Die Warnung dass, das Tool pip in einer alten Version installiert ist, können wir in diesem Schritt außer Acht lassen.

Testen der Installation

Um nun die erfolgreiche Installation zu testen öffnen wir den Python Prompt mit der Eingabe von „python“ und geben den Importbefehl „import xlsxwriter“ ein. 

testen der Installation von XlsxWriter mit dem Importbefehl
testen der Installation von XlsxWriter mit dem Importbefehl

Wenn die Installation erfolgreich war dann solltest du hier keine Fehlermeldung sehen!

Beispiele

Nachdem nun die Bibliothek installiert ist können wir mit der Erstellung unseres ersten Skriptes beginnen. Zunächst importieren wir uns das Modul „xlsxwriter“ in unser Skript.

import xlsxwriter

Beispiel 1 – erstellen einer Mappe

Damit wir Danten in eine Tabelle schreiben können müssen wir zunächst eine Microsoft Excel Mappe erstellen.

import xlsxwriter

#erstellen eines Workbook Objektes mit dem Dateinamen "testMappe.xlsx"
workbook = xlsxwriter.Workbook('testMappe.xlsx')

#erstellen eines Tabellenblattes in dem Workbook Objekt
#der Name ist dann "Sheet1"
worksheet1 = workbook.add_worksheet()

#alternativ kann der Name des Tabellenblattes als
#Parameter übergeben werden.
worksheet2 = workbook.add_worksheet('Tabellenname')

#schließen des Workbooks
workbook.close()

Wichtig ist dass, das Workbook Objekt am Ende geschlossen wird, denn erst dann werden die Daten final in die Datei geschrieben.

Beispiel 2 – schreiben von Daten in eine Tabelle

In unserem Worksheet können wir nun Daten in eine bestimmte Zelle schreiben. Die Zelle beginnt beim Buchstaben „A“ und endet mit „XFD“. Wir können maximal 1048576 Zeilen pro Tabellenblatt schreiben. 

import xlsxwriter

#erstellen eines Workbook Objektes mit dem Dateinamen "testMappe.xlsx"
workbook = xlsxwriter.Workbook('testMappe.xlsx')

#erstellen eines Tabellenblattes mit dem
#Namen "Tabellenname"
worksheet = workbook.add_worksheet('Tabellenname')

worksheet.write('A1', 'Vorname')
worksheet.write('B1', 'Name')

#schließen des Workbooks
workbook.close()

Das Ergebnis ist, das wir eine Datei mit dem Namen „testMappe.xlsx“ und in dieser ein Tabellenblatt mit dem Namen „Tabellenname“ erzeugt haben. Des Weiteren haben wir in die Zellen „A1“ den Wert „Vorname“ sowie in die Zelle „B1“  Name geschrieben.

Excel Mappe mit Tabellenüberschriften
Excel Mappe mit Tabellenüberschriften

Schreiben wir uns eine Mehrdimensionale Liste mit Vornamen & Nachnamen und befüllen damit die Tabelle.

import xlsxwriter

#erstellen eines Workbook Objektes mit dem Dateinamen "testMappe.xlsx"
workbook = xlsxwriter.Workbook('testMappe.xlsx')

#erstellen eines Tabellenblattes mit dem
#Namen "Tabellenname"
worksheet = workbook.add_worksheet('Tabellenname')

worksheet.write('A1', 'Vorname')
worksheet.write('B1', 'Name')

#eine Mehrdimensionale Liste mit Namen
namen = [['Max', 'Mustermann'],['Erika', 'Müller'], ['Andi', 'Wand']]

#Variable zum speichern der aktuellen Zeile
rows = 2
#For-Schleife über die Namen
for vorname, name in namen:
    #schreiben des Vornamens
    worksheet.write('A'+str(rows), vorname)
    #schreiben des Nachnamens
    worksheet.write('B'+str(rows), name)
    #incrementieren der Zeilennummer
    rows = rows + 1

#schließen des Workbooks
workbook.close()

Beispiel 3 – Zellenformatierungen

Wir können an der bereits bekannten Funktion „write“ neben der Zelle und dem Text auch ein zusätzlichen, optionalen Parameter für die Zellenformatierung übergeben.

Zunächst definieren wir uns ein einfaches Objekt mit der Zellenformatierung für den Hintergrund.

oddCellFormat = workbook.add_format()
oddCellFormat.set_bg_color('#d4ddcf')

evenCellFormat = workbook.add_format()
evenCellFormat.set_bg_color('#bec6ba')

In der offiziellen Dokumentation zu XlsxWriter findest du eine gesamte Auflistung aller Formatierungsmöglichkeiten.

eingefärbte Zeilen in Excel
eingefärbte Zeilen in Excel
import xlsxwriter

#erstellen eines Workbook Objektes mit dem Dateinamen "testMappe.xlsx"
workbook = xlsxwriter.Workbook('testMappe.xlsx')

#erstellen eines Tabellenblattes mit dem
#Namen "Tabellenname"
worksheet = workbook.add_worksheet('Tabellenname')

oddCellFormat = workbook.add_format()
oddCellFormat.set_bg_color('#d4ddcf')

evenCellFormat = workbook.add_format()
evenCellFormat.set_bg_color('#bec6ba')
    
worksheet.write('A1', 'Vorname')
worksheet.write('B1', 'Name')

#eine Mehrdimensionale Liste mit Namen
namen = [['Max', 'Mustermann'],['Erika', 'Müller'], ['Andi', 'Wand']]

#Variable zum speichern der aktuellen Zeile
rows = 2
#For-Schleife über die Namen
for vorname, name in namen:
    #zuweisen der Formatierung für Zeilen welche eine Ungerade Zeilenzahl haben
    cellFormat = oddCellFormat
    #prüfen ob die Zeilenzahl gerade ist
    #Die Funktion Modulo liefert eine Zahl größer 0 wenn die Zeile ungerade ist.
    if((rows % 2) == 0):
        #zuweisen des Zellenformates für gerade Zeilen
        cellFormat = evenCellFormat
    #schreiben des Vornamens sowie setzen des Zellenformates
    worksheet.write('A'+str(rows), vorname, cellFormat)
    #schreiben des Nachnamens sowie setzen des Zellenformates
    worksheet.write('B'+str(rows), name, cellFormat)
    #incrementieren der Zeilennummer
    rows = rows + 1

#schließen des Workbooks
workbook.close()

Beispiel 4 – Diagramme

Eine große Stärke von Python ist die Verarbeitung von sehr großen Datenmengen und das Visualisieren von diesen Daten können wir zbsp. auch mit Diagrammen machen.

Als erstes erzeugen wir ein einfaches Liniendiagramm, hierzu habe ich eine mehrdimensionale Liste mit Städten und deren Einwohnerzahlen erstellt.

#eine Mehrdimensionale Liste mit Namen zu Städten und deren Einwohnerzahlen
staedte = [['Stendal', 41567],['Braunschweig', 248292], ['Helmstedt', 91307]]

Diese Werte schreiben wir zunächst in die Tabelle.  Danach können wir unser Diagramm auf diese Werte verweisen ein Styling festlegen und positionieren.

#erzeugen eines Liniendiagrammes
chart = workbook.add_chart({'type': 'line'})
#setzten des Titels
chart.set_title({ 'name': 'Einwohner pro Stadt'})
#zuweisen der Werte
chart.add_series({'values': '=Tabellenname!$B$2:$B$4', 
                #die Beschriftungen
                  'categories':'=Tabellenname!$A$2:$A$4',
                #der Style der Linie definieren
                   'line': {
                       #Farbe rot
                        'color': 'red',
                       #Stärke 1
                        'width': 1,
                }})

#positionieren des Diagramms an der Zelle A7
worksheet.insert_chart('A7', chart)

Das Ergebnis ist ein Tabellenblatt mit einer Datentabelle sowie einem Liniendiagramm.

Python3 XlsxWriter - Tabellenblatt mit Datentabelle und Liniendiagramm
Python3 XlsxWriter – Tabellenblatt mit Datentabelle und Liniendiagramm

Das gesamte Skript / Programm:

import xlsxwriter

#erstellen eines Workbook Objektes mit dem Dateinamen "testChartMappe.xlsx"
workbook = xlsxwriter.Workbook('testChartMappe.xlsx')

#erstellen eines Tabellenblattes mit dem
#Namen "Tabellenname"
worksheet = workbook.add_worksheet('Tabellenname')

oddCellFormat = workbook.add_format()
oddCellFormat.set_bg_color('#d4ddcf')

evenCellFormat = workbook.add_format()
evenCellFormat.set_bg_color('#bec6ba')
    
worksheet.write('A1', 'Stadt')
worksheet.write('B1', 'Einwohner')

#eine Mehrdimensionale Liste mit Namen zu Städten und deren Einwohnerzahlen
staedte = [['Stendal', 41567],['Braunschweig', 248292], ['Helmstedt', 91307]]

#Variable zum speichern der aktuellen Zeile
rows = 2
#For-Schleife über die Namen
for stadt, einwohner in staedte:
    #zuweisen der Formatierung für Zeilen welche eine Ungerade Zeilenzahl haben
    cellFormat = oddCellFormat
    #prüfen ob die Zeilenzahl gerade ist
    #Die Funktion Modulo liefert eine Zahl größer 0 wenn die Zeile ungerade ist.
    if((rows % 2) == 0):
        #zuweisen des Zellenformates für gerade Zeilen
        cellFormat = evenCellFormat
    #schreiben des Vornamens sowie setzen des Zellenformates
    worksheet.write('A'+str(rows), stadt, cellFormat)
    #schreiben des Nachnamens sowie setzen des Zellenformates
    worksheet.write('B'+str(rows), int(einwohner), cellFormat)
    #incrementieren der Zeilennummer
    rows = rows + 1

#erzeugen eines Liniendiagrammes
chart = workbook.add_chart({'type': 'line'})
#setzten des Titels
chart.set_title({ 'name': 'Einwohner pro Stadt'})
#zuweisen der Werte
chart.add_series({'values': '=Tabellenname!$B$2:$B$4', 
                #die Beschriftungen
                  'categories':'=Tabellenname!$A$2:$A$4',
                #der Style der Linie definieren
                   'line': {
                       #Farbe rot
                        'color': 'red',
                       #Stärke 1
                        'width': 1,
                }})

#positionieren des Diagramms an der Zelle A7
worksheet.insert_chart('A7', chart)

#schließen des Workbooks
workbook.close()

Hinweis: Die Werte der Einwohnerzahlen müssen als Zahlenwerte geschrieben werden da ein Diagramm aus Textwerten nicht erstellt werden kann!

Ausblick & Abschluß

Die hier gezeigten Beispiele zeigen einige wenige Funktionen der Bibliothek XlsxWriter. In der offiziellen Dokumentation findest du noch viele weitere Funktionen, um deine Datentabelle oder Diagramm zu formatieren. Du kannst auch in den Zellen Formeln hinterlegen und so deine Tabelle noch dynamischer gestalten, aber dazu werde ich in einem weiteren Beitrag näher eingehen.

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}