🙏 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!🍀

❤️ DANKE >> << DANKE ❤️

>> 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

Alles zur Programmierung im LibreOffice.
StefKe
Beiträge: 62
Registriert: Sa 5. Nov 2022, 18:47

Re: Diagramm; Datenbereich per ScriptForge änderen

Beitrag von StefKe » Di 18. Jun 2024, 20:19

oh, ich muss gleich noch nachhaken...
lt. Buch S.575, ganz unten:
setName(name) Legt den Diagrammnamen fest.
Beispiel ausgehend von dem vorherigen Code:

Code: Alles auswählen

def diagramm_daten():
    oDoc = XSCRIPTCONTEXT.getDocument()
    oSheet = oDoc.Sheets[0]
    oChart = oSheet.Charts[0]
    print(oChart.getName()) # lt. Konsole: Object 1
    sName = "Diagramm"    
    oChart.setNames(sName)# da wird gemeckert!
In Calc -> Navigator -> OLE-Objekte: "MyChart"
Wo liegt der Unterschied zwischen Object 1 und MyChart versteckt?

Danke - Stefan

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: Diagramm; Datenbereich per ScriptForge änderen

Beitrag von karolus » Di 18. Jun 2024, 22:04

StefKe hat geschrieben:
Di 18. Jun 2024, 19:24
Ich arbeite mit VS-Code und vermisse bei der Verwendung von XSCRIPTCONTEXT die Autovervollständigung.
Also: wie ist der Erkenntnisweg?
Da hast du ja zunächst nur mal einen eigenständigen python-prozess im Hintergrund, der »weiss« nix von dem globalen Namensraum »innerhalb« eines von LO initierten python-prozesses!
Dem kannst du aber abhelfen, starte LO aus einem Terminal mit:

Code: Alles auswählen

soffice --calc --accept=pipe,name=abracadabra;urp;StarOffice.Servicemanager
merke dir den Namen der pipe, hier zb. abracadabra

Später in VS-code brauchst du dann etwas overhead:

Code: Alles auswählen

import uno
from pythonscript import ScriptContext

PIPENAME = "abracadabra"

def connect():
    args = f"pipe,name={PIPENAME}"
    local = uno.getComponentContext()
    resolver = local.ServiceManager.createInstance("com.sun.star.bridge.UnoUrlResolver")
    ctx = resolver.resolve( f"uno:{args};urp;StarOffice.ComponentContext")
    
    global XSCRIPTCONTEXT
    XSCRIPTCONTEXT = ScriptContext(ctx, None, None)
    
    
# genau einmal pro Sitzung:
connect()
#und danach auskommentieren!
ab da »kennt« dein python-process XSCRIPTCONTEXT
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

StefKe
Beiträge: 62
Registriert: Sa 5. Nov 2022, 18:47

Re: Diagramm; Datenbereich per ScriptForge änderen

Beitrag von StefKe » Di 18. Jun 2024, 23:05

Tja, wäre zu schön - aber leider:

Der vom ersten Script ausgegeben Name ist gleichfalls "abracadabra".
Das 2.Script ist im Ordner C:\Users\Stefan\AppData\Roaming\LibreOffice\4\user\Scripts\python als LO_pipe.py gespeichert.
Als Intepreter eingestellt:
C:\Program Files\LibreOffice\program\python-core-3.8.19\bin\python.exe

Es ist aber gleich welcher Intepreter ausgewählt wird, es erscheint die gleiche Fehlermeldung.
Traceback (most recent call last):
File "c:\Users\Stefan\AppData\Roaming\LibreOffice\4\user\Scripts\python\LO_pipe.py", line 1, in <module>
import uno
File "C:\Program Files\LibreOffice\program\uno.py", line 19, in <module>
import pyuno
ImportError: Module use of python38.dll conflicts with this version of Python.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: Diagramm; Datenbereich per ScriptForge änderen

Beitrag von karolus » Mi 19. Jun 2024, 00:23

Das passt irgendetwas nicht zusammen, …(falls das tatsächlich der Interpreter ist den LO benutzt und auch die selbe pyuno.dll würde python innerhalb von LO auch nicht funktionieren ) … was spricht denn:

Code: Alles auswählen

import sys

print(sys.version)
in deinem VScode

und was steht in A1, wenn du ein neues Calcdokument öffnest, und dann aus LO show_python_version ausfühst:

Code: Alles auswählen

import sys

def show_python_version():
    doc = XSCRIPTCONTEXT.getDocument()
    doc.Sheets[0]["A1"].String = sys.version
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

nitja
Beiträge: 190
Registriert: Di 20. Okt 2020, 15:55

Re: Diagramm; Datenbereich per ScriptForge änderen

Beitrag von nitja » Mi 19. Jun 2024, 08:37

karolus hat geschrieben:
Di 18. Jun 2024, 15:36
@nitja: Die Bezeichnung Missionar mag ich nicht!
Oh - das tut mir leid. Ist absolut nicht abwertend gemeint, war mir sogar besonders sympathisch. … weil ich das (Python) auch für die wesentlich schönere Sprache halte, auch wenn ich derzeit noch nicht wieder damit klarkomme.(Nur Deine absichtlich umständlichen Gegenbeispiele in Basic gefallen mir weniger.)
·
StefKe hat geschrieben:
Di 18. Jun 2024, 20:19
oh, ich muss gleich noch nachhaken...
lt. Buch S.575, ganz unten:
setName(name) Legt den Diagrammnamen fest.
Beispiel ausgehend von dem vorherigen Code:

In Calc -> Navigator -> OLE-Objekte: "MyChart"
Wo liegt der Unterschied zwischen Object 1 und MyChart versteckt?
setName funktioniert, wenn überhaupt, nur für neue (noch nicht existierende) Diagramme.

Der Navigator zeigt den Namen der "Hülle", des "shapes", in das das Diagramm eingebettet ist.
Den Namen des eingebetteten Objekts siehst Du bei der Inspektion des "shapes" als ….EmbeddedObject.EntryName
Und das ist auch ein "wrapper", noch nicht das eigentliche Diagramm-Dokument.
Aber es zeigt u.a. die "Ranges". Und solange da nicht außerdem "RelatedCellRanges" zu finden sind, funktioniert get/setRanges auch.
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

StefKe
Beiträge: 62
Registriert: Sa 5. Nov 2022, 18:47

Re: Diagramm; Datenbereich per ScriptForge änderen

Beitrag von StefKe » Mi 19. Jun 2024, 08:58

Danke, hab's gefunden?:
Bild

schwitz, LO ist so grundlegend anders als Excel :-)

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: Diagramm; Datenbereich per ScriptForge änderen

Beitrag von karolus » Mi 19. Jun 2024, 09:07

nitja hat geschrieben:(Nur Deine absichtlich umständlichen Gegenbeispiele in Basic gefallen mir weniger.)
Das klingt so, als ob ich die Gegenbeispiele konstruieren würde … wo tue ich das?
Eigentlich nehme ich nur vorhandenes in Basic, und übersetze das möglichst geschickt nach python.
… ab und zu (nicht immer ;) ) auch zusätzlich mit einer schlankeren Basic-version!
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

nitja
Beiträge: 190
Registriert: Di 20. Okt 2020, 15:55

Re: Diagramm; Datenbereich per ScriptForge änderen

Beitrag von nitja » Mi 19. Jun 2024, 09:14

StefKe hat geschrieben:
Mi 19. Jun 2024, 08:58
Danke, hab's gefunden?:
oha! Das hab' ich bei mir noch nie gesehen. Was für ein Inspektor ist das im Bildschirmfoto?
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

StefKe
Beiträge: 62
Registriert: Sa 5. Nov 2022, 18:47

Re: Diagramm; Datenbereich per ScriptForge änderen

Beitrag von StefKe » Mi 19. Jun 2024, 09:19

Da wird das Teil sichtbar:

Bild

nitja
Beiträge: 190
Registriert: Di 20. Okt 2020, 15:55

Re: Diagramm; Datenbereich per ScriptForge änderen

Beitrag von nitja » Mi 19. Jun 2024, 09:37

Danke! Und ja, ich erinnere mich.
Was da als "Name" gezeigt wird, ist genau das o.g. "EntryName".
Und, obwohl da auch "setzen" angegeben ist, ist mir das (also ändern) noch nie gelungen.
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO


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.



Antworten