Seite 1 von 3
Diagramm; Datenbereich per ScriptForge änderen
Verfasst: Mo 17. Jun 2024, 09:23
von StefKe
Hallo, ich suche nach einer Möglichkeit den Datenbereich einer Tabelle von $Sheet1.$A$1:$B$7 auf $Sheet1.$A$2:$B$8 zu änderen.
Bietet ScriptForge diese Option? Hab ich da was übersehen, oder was ist ein Lösungsweg für das Problem?
Danke - Stefan
Re: Diagramm; Datenbereich per ScriptForge änderen
Verfasst: Di 18. Jun 2024, 00:13
von nitja
Hi Stefan, in
dem Fall funktioniert der einfache setRanges-Befehl, wie z.B. bei
Pitonyak et al.¹⁾ 16.13 Listing 497 Seite 576 beschrieben.
Re: Diagramm; Datenbereich per ScriptForge änderen
Verfasst: Di 18. Jun 2024, 09:12
von StefKe
Hallo nitja, danke für den Link zum Buch und zur Seite. Ich war leider nicht genau im Thread-Titel. Das sollte, wenn möglich in Python umgesetzt werden:
Code: Alles auswählen
from scriptforge import CreateScriptService
def chart_service():
doc = CreateScriptService("Calc")
chart = doc.CreateChart("My Chart", "Sheet1", "Sheet1.A1:B6")
chart.Legend= True
bas = CreateScriptService("Basic")
chart_names = doc.Charts("Sheet1")
bas.MsgBox(f"There are {len(chart_names)} charts in Sheet1")
Laut
https://help.libreoffice.org/latest/de/ ... bPAR=BASIC muss vermutlich das Objekt XDiagramm verändert werden. Aber mit dem Link zu com.sun.star.chart.XDiagram kann ich nicht wirklich umgehen.
Gibt es irgendwo Literatur oder Tutorials wie die API Reference angewendet wird?
Oder wie kann die Verbindung zwischen Python SF und dem Code im Buch hergestellt werden.
Danke - Stefan
Re: Diagramm; Datenbereich per ScriptForge änderen
Verfasst: Di 18. Jun 2024, 10:06
von nitja
StefKe hat geschrieben: ↑Di 18. Jun 2024, 09:12
… sollte… in Python umgesetzt werden:
Wie passt das zusammen?
Der Zugriff auf die "Ranges" eines "Chart"s (via getRanges/setRanges) ist von der Skript-Sprache unabhängig und sollte in Python genauso funktionieren, wie in LOs Basic.
(Andernfalls wird sich unser Python Missionar Karolus melden.)
… und in Deinem Fall sollte
<chart"object">.setRanges(<"RangeAddress" des neuen Bereichs>)
tatsächlich funktionieren.
(… was i.A. nicht der Fall ist.)
Re: Diagramm; Datenbereich per ScriptForge änderen
Verfasst: Di 18. Jun 2024, 10:31
von StefKe
Code: Alles auswählen
from scriptforge import CreateScriptService
def chart_service():
doc = CreateScriptService("Calc")
chart = doc.CreateChart("My Chart", "Sheet1", "Sheet1.A1:B6")
chart.Legend= True
# Bereich neu:
chart.setRanges("A1:B7") # hier wird gemeckert...
leider wird der Code so nicht akzeptiert:
gehört da nicht rein, das war einfach nur ein Versuch und ein paar Zeilen zuviel kopiert...
Danke - Stefan
Re: Diagramm; Datenbereich per ScriptForge änderen
Verfasst: Di 18. Jun 2024, 13:27
von mikele
Hallo,
warum nicht einfach
Code: Alles auswählen
def diagramm_daten():
oDoc = XSCRIPTCONTEXT.getDocument()
oSheet = oDoc.Sheets[0]
oChart = oSheet.Charts[0]
oAdr=[oSheet.getCellRangeByName("A2:B8").getRangeAddress(),]
oChart.setRanges(oAdr)
Re: Diagramm; Datenbereich per ScriptForge änderen
Verfasst: Di 18. Jun 2024, 15:36
von karolus
Hallo
@mikele: in LO geht seit ~5.3 auch NameAccess per oSheet["A2:B8"]…
@nitja: Die Bezeichnung Missionar mag ich nicht!
@ScriptForge: sobald du ein Objekt via Scriptforge erzeugst, verliert dieses Objekt jeden Bezug zum »normalen API-Namensraum« ( selbst Mri scheitert komplett! )
Re: Diagramm; Datenbereich per ScriptForge änderen
Verfasst: Di 18. Jun 2024, 19:24
von StefKe
Hallo mikele, danke für das Script - es tut was es soll.
Ich arbeite mit VS-Code und vermisse bei der Verwendung von XSCRIPTCONTEXT die Autovervollständigung.
Oder fehlt da was in den Einstellungen?
Wie z.Bsp. muss man herangehen um eine neues Diagramm zu erstellen? Beim Lesen von:
https://help.libreoffice.org/24.2/de/te ... System=WIN geht bei mir wirklich kein Licht an, leider
Also: wie ist der Erkenntnisweg?
Danke - Stefan
Re: Diagramm; Datenbereich per ScriptForge änderen
Verfasst: Di 18. Jun 2024, 19:47
von mikele
Hallo,
ich habe praktisch nichts anderes gemacht, als das Basic-Script auf das nitja verwiesen hat in Python "zu übersetzen". Wobei "übersetzen" es nicht wirklich trifft, stimmt, da der Zugriff auf die API-Objekte pratisch gleich ist.
Re: Diagramm; Datenbereich per ScriptForge änderen
Verfasst: Di 18. Jun 2024, 19:56
von StefKe
Danke, das ist Übungsmaterial für die nächsten Abende
Stefan