openpyxl: Diagramm in Excel-Datei wird in LibreOffice nicht richtig dargestellt
Verfasst: Montag 12. Oktober 2020, 21:20
Hallo,
dieser code erstellt mit openpyxl eine Excel-Datei:
Wenn ich diese Datei mit Excel öffne sieht sie so aus (korrekt):

Wenn ich sie mit LibreOffice öffne sieht sie so aus (nicht korrekt):

und wenn ich sie mit FreeOffice öffne wird gar kein Diagramm angezeigt.
Mein erster Gedanke war ok, das xlsx-Format ist offensichtlich nicht kopatibel mit LibreOffice. Das erschien mir aber nicht besonders wahrscheinlich, denn wenn ich Excel-Dateien manuell erstelle werden die in aller Regel gut von LibreOffice dargestellt.
Ich habe ein zweites Skript ohne openpyxl geschrieben, das eine fast identische Datei erzeugt:
und siehe da, diese wird von allen 3 Office-Anwendungen korrekt dargestellt.
Also muss wohl irgendein Fehler in meinem Skript sein, oder?
Wie kann ich mit openpyxl eine Excel-Datei erstellen, die auch kompatibel mit LibreOffice ist?
dieser code erstellt mit openpyxl eine Excel-Datei:
Code: Alles auswählen
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
wb = Workbook()
ws = wb.active
for i in range(10):
ws.append([i])
values = Reference(ws, min_col=1, min_row=1, max_col=1, max_row=10)
chart = BarChart()
ws.add_chart(chart, "A15")
chart.title = "Chart"
chart.y_axis.title = 'Size'
chart.x_axis.title = 'Test Number'
chart.legend.Legend = False
chart.add_data(values)
wb.save("BarChart1.xlsx")

Wenn ich sie mit LibreOffice öffne sieht sie so aus (nicht korrekt):

und wenn ich sie mit FreeOffice öffne wird gar kein Diagramm angezeigt.
Mein erster Gedanke war ok, das xlsx-Format ist offensichtlich nicht kopatibel mit LibreOffice. Das erschien mir aber nicht besonders wahrscheinlich, denn wenn ich Excel-Dateien manuell erstelle werden die in aller Regel gut von LibreOffice dargestellt.
Ich habe ein zweites Skript ohne openpyxl geschrieben, das eine fast identische Datei erzeugt:
Code: Alles auswählen
import pandas as pd
writer = pd.ExcelWriter('BarChart2.xlsx', engine='xlsxwriter')
Data = pd.DataFrame([0,1,2,3,4,5,6,7,8,9])
Data.to_excel(writer , sheet_name='Sheet', header = False, index = False)
workbook = writer.book
worksheet = writer.sheets['Sheet']
chart = workbook.add_chart({'type': 'column'})
chart.add_series({'values': '=Sheet!A1:A10', 'data_labels': {'value': False, 'legend_key': False}})
chart.set_legend({'none': True})
chart.set_title({'name': 'Chart'})
chart.set_x_axis({'name': 'Test Number'})
chart.set_y_axis({'name': 'Size'})
worksheet.insert_chart(14, 0, chart)
writer.save()
Also muss wohl irgendein Fehler in meinem Skript sein, oder?
Wie kann ich mit openpyxl eine Excel-Datei erstellen, die auch kompatibel mit LibreOffice ist?