openpyxl: Diagramm in Excel-Datei wird in LibreOffice nicht richtig dargestellt

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
earloop
User
Beiträge: 42
Registriert: Sonntag 11. Oktober 2020, 13:54

Hallo,

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 diese Datei mit Excel öffne sieht sie so aus (korrekt):
Bild
Wenn ich sie mit LibreOffice öffne sieht sie so aus (nicht korrekt):
Bild
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()
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?
earloop
User
Beiträge: 42
Registriert: Sonntag 11. Oktober 2020, 13:54

Hat wirklich niemand eine Idee, woran das liegen kann? :)
Antworten