Im ersten Teil habe ich dir gezeigt wie du eine Microsoft Excel Mappe erstellst und Daten formatierst ablegst. In diesem Beitrag werde ich dir nun die verschiedenen Formatierungsmöglichkeiten von Zellen zeigen.
Du benötigst für diesen Beitrag eine installierte Version der Bibliothek XlsxWriter sowie Python3. Wie du die Bibliothek mit “pip” installierst und diese Installation testest habe ich dir bereits im ersten Teil gezeigt.
Schriftart & Style
Zunächst zeige ich dir die verschiedenen Möglichkeiten wie du Texte stylen kannst.
import xlsxwriter #erstellen eines Workbook Objektes mit dem Dateinamen "testMappe.xlsx" workbook = xlsxwriter.Workbook('testFormatMappe.xlsx') #erstellen eines Tabellenblattes mit dem #Namen "Tabellenname" worksheet = workbook.add_worksheet('Tabellenname') #erstellen des Zellenformates für Fett-Schrift boldCellFormat = workbook.add_format() boldCellFormat.set_bold() #erstellen des Zellenformates für Kursiv-Schrift italicCellFormat = workbook.add_format() italicCellFormat.set_italic() #erstellen des Zellenformates für Unterstrichene-Schrift underlineCellFormat = workbook.add_format() underlineCellFormat.set_underline() #erstellen des Zellenformates für Fett, Kursiv und Unterstrichene-Schrift multiCellFormat = workbook.add_format() multiCellFormat.set_bold() multiCellFormat.set_italic() multiCellFormat.set_underline() #schreiben eines Textes in die Zelle mit einem Zellenformat worksheet.write('A1', 'Hier steht ein fetter Text.', boldCellFormat) worksheet.write('A3', 'Hier steht ein kursiver Text.', italicCellFormat) worksheet.write('A5', 'Hier steht ein unterstrichener Text.', underlineCellFormat) worksheet.write('A7', 'Hier steht ein fetter, kursiver und unterstrichener Text.', multiCellFormat) #schließen des Workbooks workbook.close()
Schriftart, Schriftgröße und Farbe
Bei der Schriftart würde ich empfehlen auf die von Microsoft Excel mitgelieferten zurück zu greifen denn ansonsten müßte die zusätzliche Schriftart ggf. mit der Mappe mitgeliefert werden.
import xlsxwriter #erstellen eines Workbook Objektes mit dem Dateinamen "testMappe.xlsx" workbook = xlsxwriter.Workbook('testFormatMappe.xlsx') #erstellen eines Tabellenblattes mit dem #Namen "Tabellenname" worksheet = workbook.add_worksheet('Tabellenname') #Zellenformat mit Schriftart "Verdana" und Schriftgröße 12 verdana12fontCellFormat = workbook.add_format() verdana12fontCellFormat.set_font_name('Verdana') verdana12fontCellFormat.set_font_size(12) #Zellenformat mit Schriftart "Arial" und Schriftgröße 18 arial18fontCellFormat = workbook.add_format() arial18fontCellFormat.set_font_name('Arial') arial18fontCellFormat.set_font_size(18) #Zellenformat mit Schriftart "Times New Roman" und Schriftgröße 22 timesNewRoman22fontCellFormat = workbook.add_format() timesNewRoman22fontCellFormat.set_font_name('Times New Roman') timesNewRoman22fontCellFormat.set_font_size(22) worksheet.write('A1', 'Hier ein Text in Verdana, Schriftgröße 12.', verdana12fontCellFormat) worksheet.write('A3', 'Hier ein Text in Arial, Schriftgröße 18.', arial18fontCellFormat) worksheet.write('A5', 'Hier ein Text in Times New Roman, Schriftgröße 22.', timesNewRoman22fontCellFormat) #schließen des Workbooks workbook.close()
Schriftfarbe
Um dem Text bzw. den Wert einer Zelle eine Farbe zuzuweisen müssen wir unserem Zellenformat lediglich die Farbe mit der Funktion “set_font_color” übergeben. Eine Liste an möglichen Farbwerten findest du im Abschnitt “Hintergrundfarbe” in diesem Beitrag.
import xlsxwriter #erstellen eines Workbook Objektes mit dem Dateinamen "testMappe.xlsx" workbook = xlsxwriter.Workbook('testFormatMappe.xlsx') #erstellen eines Tabellenblattes mit dem #Namen "Tabellenname" worksheet = workbook.add_worksheet('Tabellenname') #Schriftfarbe "rot" redFontColorCellFormat = workbook.add_format() redFontColorCellFormat.set_font_color('red') worksheet.write('C3', 'Ein kurzer Text.', redFontColorCellFormat) #schließen des Workbooks workbook.close()
Rahmen
In diesem Abschnitt zeige ich dir nun wie du einen Rahmen um eine Zelle erstellen kannst.
import xlsxwriter #erstellen eines Workbook Objektes mit dem Dateinamen "testMappe.xlsx" workbook = xlsxwriter.Workbook('testFormatMappe.xlsx') #erstellen eines Tabellenblattes mit dem #Namen "Tabellenname" worksheet = workbook.add_worksheet('Tabellenname') #Zellenformat für einen kompletten Rahmen borderCellFormat = workbook.add_format() borderCellFormat.set_border() #Zellenformat für einen Rahmen mit nur oben & unten bottomTopBorderCellFormat = workbook.add_format() bottomTopBorderCellFormat.set_bottom() bottomTopBorderCellFormat.set_top() #Zellenformat für einen farbigen Rahmen borderColorCellFormat = workbook.add_format() borderColorCellFormat.set_border() borderColorCellFormat.set_top_color('red') borderColorCellFormat.set_bottom_color('blue') borderColorCellFormat.set_left_color('green') borderColorCellFormat.set_right_color('black') worksheet.write('C3', 'Ein kurzer Text.', borderCellFormat) worksheet.write('C5', 'Ein kurzer Text.', bottomTopBorderCellFormat) worksheet.write('C7', 'Ein kurzer Text.', borderColorCellFormat) #schließen des Workbooks workbook.close()
Farben
Farben können an Text, Zellenhintergrund individuell gesetzt werden (wie in Excel auch).
Hintergrundfarbe
Zunächst setzen wir die Hintergrundfarbe einer Zelle. Wir können zum einen Namen für die Farbwerte wählen und zum anderen Hex Werte
Zulässige Werte für Namen sind:
- black
- blue
- brown
- cyan
- gray
- green
- lime
- magenta
- navy
- orange
- pink
- purple
- red
- silver
- white
- yellow
Die Hex Werte kann man zbsp. über die Webseite https://www.color-hex.com/ entnehmen.
definieren der Hintergrundfarbe über einen Namen
#Hintergrundfarbe mit einem Namen definieren redBgColorCellFormat = workbook.add_format() redBgColorCellFormat.set_bg_color('red')
definieren der Hintergrundfarbe über einen Hexadezimal Wert
#Hintergrundfarbe mit einem Hex Wert definieren greenBgColorCellFormat = workbook.add_format() greenBgColorCellFormat.set_bg_color('#9ea257')
Bedingteformatierungen
Nachdem ich nun gezeigt habe wie man an einer Zelle einen bestimmten Farbwert setzt möchte ich nun gerne zeigen wie du einen von dem Zellenwert abhängigen Farbwert setzt. Dieses kannst du mit einer Bedingtenformatierung erledigen.
Zunächst erstellen wir uns eine Tabelle mit verschiedenen Zellenwerten (Zahlen und Buchstaben)
import xlsxwriter #erstellen eines Workbook Objektes mit dem Dateinamen "testMappe.xlsx" workbook = xlsxwriter.Workbook('testBedFormatMappe.xlsx') worksheet = workbook.add_worksheet('Tabellenname') #eine mehrdimensionale Liste mit Namen, Geschlecht und Alter personen = [['Max Mustermann','m', 32], ['Erika Müller','w', 23], ['Roman Tisch', 'm', 45], ['Birgit Gross', 'w', 67]] #schreiben der Tabellenköpfe worksheet.write('A1', 'Name') worksheet.write('B1', 'Geschlecht') worksheet.write('C1', 'Alter') #Variable zum speichern der Zeilennummer row = 2; #die mehrdimensionale Liste durchlaufen for name, gender, age in personen: #schreiben der Werte in die Tabelle worksheet.write('A'+str(row), name) worksheet.write('B'+str(row), gender) worksheet.write('C'+str(row), age) row = row + 1 #erzeugnen eines Zellenformates für das Geschlecht "weiblich (w)" redColor = workbook.add_format() redColor.set_bg_color('#ffb2b2') #erzeugen eiens Zellenformates für das Geschlecht "männlich (m)" blueColor = workbook.add_format() blueColor.set_bg_color('#ccccff') #setzen einer Bedingtenzellenformatierung in dem Bereich B2 bis B-Zeilenende #wenn der Zellenwert "w" ist worksheet.conditional_format('B2:B'+str(row), {'type': 'cell', 'criteria': '==', 'value': '"w"', 'format': redColor}) #setzen einer Bedingtenzellenformatierung in dem Bereich B2 bis B-Zeilenende #wenn der Zellenwert "m" ist worksheet.conditional_format('B2:B'+str(row), {'type': 'cell', 'criteria': '==', 'value': '"m"', 'format': blueColor}) #die Spalte alter wird mit einem farbigen Wert versehen welcher von Grau bis Rot reicht. worksheet.conditional_format('C2:C'+str(row), {'type': '2_color_scale', 'min_color': 'gray', 'max_color': 'red'}) #schließen des Workbooks workbook.close()