🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Diagramm; Datenbereich per ScriptForge änderen
Diagramm; Datenbereich per ScriptForge änderen
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
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
Hi Stefan, in dem Fall funktioniert der einfache setRanges-Befehl, wie z.B. bei Pitonyak et al.¹⁾ 16.13 Listing 497 Seite 576 beschrieben.
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO
Re: Diagramm; Datenbereich per ScriptForge änderen
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:
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
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")
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
Wie passt das zusammen?StefKe hat geschrieben: ↑Di 18. Jun 2024, 09:12… sollte… in Python umgesetzt werden:Code: Alles auswählen
… bas = CreateScriptService("Basic") …
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.)
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO
Re: Diagramm; Datenbereich per ScriptForge änderen
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...

Code: Alles auswählen
bas = CreateScriptService("Basic") …
Danke - Stefan
Re: Diagramm; Datenbereich per ScriptForge änderen
Hallo,
warum nicht einfach
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)
Gruß,
mikele
mikele
Re: Diagramm; Datenbereich per ScriptForge änderen
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! )
@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! )
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Re: Diagramm; Datenbereich per ScriptForge änderen
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
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
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.
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.
Gruß,
mikele
mikele
Re: Diagramm; Datenbereich per ScriptForge änderen
Danke, das ist Übungsmaterial für die nächsten Abende
Stefan

Stefan
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.