2017-07-04 2 views
1

Wenn ich ein Diagramm von xlwings plotten, kann ich den Chart-Namen nicht ändern. Der Planname und Legende Namen sind noch ‚Serie 1‘, aber die linken oberen Ecke zeigt ‚Februar Verkäufe‘, das ist Ich willChart-Namen in Xlwings setzen

import xlwings as xw 

sht = xw.Book().sheets[0] 
sht.range('A1').value = list(zip([1, 2, 3, 4])) 
chart = sht.charts.add() 
chart.set_source_data(sht.range('A1').expand()) 
chart.chart_type = 'line_markers' 
chart.name='Feb sales' 
#chart.api.ChartTitle.Text = 'Feb sales' 
#chart.delete() 

created chart

Ist das ein bekanntes Problem? Wie kann ich das beheben?

Antwort

2

sollte diese Arbeit:

import xlwings as xw 

sht = xw.Book().sheets[0] 
sht.range('A1').value = list(zip([1, 2, 3, 4])) 
chart = sht.charts.add() 
chart.set_source_data(sht.range('A1').expand()) 
chart.chart_type = 'line_markers' 

chart.api[1].SetElement(2) # Place chart title at the top 
chart.api[1].ChartTitle.Text = 'Feb sales' # Change text of the chart title 

Der Ausdruck chart.api gibt ein Tupel mit zwei COM-Wrapper. Ich bin nicht wirklich sicher, warum es zwei COM-Wrapper gibt, aber es scheint, dass Sie die zweite benötigen, um auf das Diagramm zuzugreifen. Daher die Verwendung von chart.api[1] hier.

Mit dem Attribut xlwings.Chart.name können Sie die Eigenschaft Name eines Excel-Diagramms festlegen (wie im Code Ihrer Frage), aber dies ist keine Eigenschaft, die für die Anzeige verwendet wird. Um die Anzeige von Text im Diagramm zu erreichen, müssen Sie die Eigenschaft ChartTitle des Excel-Diagramms festlegen (wie im Code dieser Antwort ausgeführt).

+0

Ja, das funktioniert! Ich frage mich, ob ich den Chart-Namen nur durch xlwings ändern könnte, da ich festgestellt habe, dass es in der Dokumentation eine Funktion namens chart.name gibt? – Tom

+0

@Tom Siehe die bearbeitete Antwort. – Xukrao

Verwandte Themen