Python und ods Dateien
Verfasst: Montag 23. September 2024, 17:16
Bei folgendem Programm sollen die Wörter in verschiedenen Farben dargestellt werden. Das funktioniert nicht. Mit einer Excel Datei funktioniert es. Woran kann es liegen. Ich nutze PyCharm. Odfpy ist installiert. Hier der Code:
Code: Alles auswählen
from odf.opendocument import OpenDocumentSpreadsheet
from odf.style import Style, TextProperties
from odf.table import Table, TableRow, TableCell
from odf.text import P
# Erstelle ein neues ODS-Dokument
doc = OpenDocumentSpreadsheet()
# Definiere einige Schriftarten, -größen und -farben für die Wörter
styles = [
{"color": "#FF0000", "fontsize": "14pt", "fontfamily": "Arial"},
{"color": "#00FF00", "fontsize": "16pt", "fontfamily": "Verdana"},
{"color": "#0000FF", "fontsize": "18pt", "fontfamily": "Courier New"},
{"color": "#FF00FF", "fontsize": "20pt", "fontfamily": "Times New Roman"},
{"color": "#00FFFF", "fontsize": "22pt", "fontfamily": "Georgia"},
]
# Beispieltext
text = "Das ist ein Test Satz für eine ODS Datei"
# Erstelle eine Tabelle
table = Table()
# Erstelle eine Zeile in der Tabelle
tr = TableRow()
# Teile den Satz in Wörter auf
words = text.split()
# Weise jedem Wort eine andere Formatierung zu
for i, word in enumerate(words):
# Erstelle eine neue Zelle
tc = TableCell()
# Wähle einen Stil für das Wort (wiederholt sich, falls es mehr Wörter als Stile gibt)
style_props = styles[i % len(styles)]
# Erstelle den Stil für das aktuelle Wort
style = Style(name=f"style{i}", family="text")
style.addElement(TextProperties(color=style_props["color"], fontsize=style_props["fontsize"], fontfamily=style_props["fontfamily"]))
doc.styles.addElement(style)
# Füge das Wort mit dem entsprechenden Stil in die Zelle ein
p = P(text=word, stylename=style)
tc.addElement(p)
# Füge die Zelle der Zeile hinzu
tr.addElement(tc)
# Füge die Zeile der Tabelle hinzu
table.addElement(tr)
# Füge die Tabelle dem Dokument hinzu
doc.spreadsheet.addElement(table)
# Speichere das Dokument
doc.save("test_document.ods")
print("Die Datei wurde erfolgreich erstellt.")