libreoffice-script-provider-python war schon installiert, »apso.oxt« ist nun installiert und in LO eingebunden. Zudem habe ich dein Python script per c&p als "items2cell.py" in das Verzeichnis kopiert, in dem sich "test.ods" befindet (Wohin sollte man für eine allgemeine Verfügbarkeit in LO *.py-Scripte abspeichern?).
Wenn ich den Inhalt deines scripts (ich habe keine Ahnung von shell-Scripts und noch weniger von Python-Scripts) richtig deute wirkt es bei Aufruf auf die aktive Tabelle in der momentan aktiven Datei ein.
Was ich nicht verstehe ist der Umgang mit der Python console. Ich verstehe nicht was ich tun muß um das Macro in "test.ods" mit "items2cell.py" zu starten?
Ich öffne per /Etras/Makros/Macros ausführen/Meine Makros/apso.oxt-tools-console und ...???
(die hilfe habe ich überflogen, das sagt mir nichts ohne weiteren input)
Die interaktive Hilfe "help()" habe ich ausprobiert, "modules cell" findet "items2cell.py" nicht ... und ist wohl nicht was ich tun soll.
N klitzekleiner Tipp?
🙏 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. 🤗
(gelöst) zelleninhalt auf zellen aufteilen
Re: zelleninhalt auf zellen aufteilen
Hallo
Den »apso-dialog« erreichst du per →Extras→Makros→Python Scripte verwalten
Dort möchtest du zunächst mal ein neues Modul:
(da trägst du nur den gewünschten Dateinamen ein: fürs Beispiel »micha.py« Danach markierst du »micha« und wählst →menü→bearbeiten: damit öffnet sich dann dein default-Texteditor*** … da kannst du per c&p die geposteten Codeschnipsel einfügen,
(die Zeile »from functools import partial« sollte aber möglichst am Anfang stehen) … und die Datei speichen <strg>s
###
***falls das nicht klappt, musst du ggf →→Extras→Extensionmanager→→APSO auswählen und über die Schaltfläche Optionen den Pfad zum Editor einstellen, bei mir: »/usr/bin/geany«
Deine Benutzerkonfiguration /home/micha/.config/libreoffice/4/user/ … und die python-scripte im Unterordner »Scripts/python/«
Falls du mehrere Benutzer auf deinem System hast, kannst du dann unter »usr/lib/libreoffice/share/Scripts/python/« speichern ( letzteres entspricht im APSO-dialog …>>Libreoffice Macros… )
###alternativ eben einfach die angehängte »micha.zip« in den gewünschten Ordner unter bsplw. dem namen »…micha.py« abspeichern. als letzten Schritt musst du dann in deinem Dokument den gewünschten Zellbereich selektieren und die gewünschte Funktion ausführen per →makros→python scripte verwalten→Modul…Funktion auswählen und →→Ausführen
Den »apso-dialog« erreichst du per →Extras→Makros→Python Scripte verwalten
Dort möchtest du zunächst mal ein neues Modul:
(da trägst du nur den gewünschten Dateinamen ein: fürs Beispiel »micha.py« Danach markierst du »micha« und wählst →menü→bearbeiten: damit öffnet sich dann dein default-Texteditor*** … da kannst du per c&p die geposteten Codeschnipsel einfügen,
(die Zeile »from functools import partial« sollte aber möglichst am Anfang stehen) … und die Datei speichen <strg>s
###
***falls das nicht klappt, musst du ggf →→Extras→Extensionmanager→→APSO auswählen und über die Schaltfläche Optionen den Pfad zum Editor einstellen, bei mir: »/usr/bin/geany«
Deine Benutzerkonfiguration /home/micha/.config/libreoffice/4/user/ … und die python-scripte im Unterordner »Scripts/python/«
Falls du mehrere Benutzer auf deinem System hast, kannst du dann unter »usr/lib/libreoffice/share/Scripts/python/« speichern ( letzteres entspricht im APSO-dialog …>>Libreoffice Macros… )
###alternativ eben einfach die angehängte »micha.zip« in den gewünschten Ordner unter bsplw. dem namen »…micha.py« abspeichern. als letzten Schritt musst du dann in deinem Dokument den gewünschten Zellbereich selektieren und die gewünschte Funktion ausführen per →makros→python scripte verwalten→Modul…Funktion auswählen und →→Ausführen
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: zelleninhalt auf zellen aufteilen
OMG
geany war und ist installiert.
Jetzt hast du dir soviel Mühe gemacht und ich bin verwirrter als zu vor. micha.py verwirrt mich, keine Ahnung ob das nur ein Beispiel oder was auch immer ist. Ist ja auch kein beschreibender Name ...
Ich hatte deinen Pythoncode ja als "items2cell.py" abgespeichert. Wenn ich diese Datei wie von dir für micha.py beschrieben als Modul einbinde unter/Extras/Erweiterungsverwaltung/hinzufügen kommen einige Meldungen. Ich kann das aber nicht aufrufen.
EDIT: OK, ich war im falschen menü ... moment ...!
Das hat geklappt (wenn auch nciht mit geany, bei mir war wohl bluefish als Standardanwendung für py eingestellt.
Das Modul ist nun "Extras/Makro/Makros ausführen" verfügbar ... und es funktioniert. Supiiiiiiiii . Danke. Und habe einiges gelernt!
Danke.
geany war und ist installiert.
Jetzt hast du dir soviel Mühe gemacht und ich bin verwirrter als zu vor. micha.py verwirrt mich, keine Ahnung ob das nur ein Beispiel oder was auch immer ist. Ist ja auch kein beschreibender Name ...
Ich hatte deinen Pythoncode ja als "items2cell.py" abgespeichert. Wenn ich diese Datei wie von dir für micha.py beschrieben als Modul einbinde unter/Extras/Erweiterungsverwaltung/hinzufügen kommen einige Meldungen. Ich kann das aber nicht aufrufen.
EDIT: OK, ich war im falschen menü ... moment ...!
Das hat geklappt (wenn auch nciht mit geany, bei mir war wohl bluefish als Standardanwendung für py eingestellt.
Das Modul ist nun "Extras/Makro/Makros ausführen" verfügbar ... und es funktioniert. Supiiiiiiiii . Danke. Und habe einiges gelernt!
Danke.
Zuletzt geändert von michaa7 am Mi 29. Mär 2023, 14:27, insgesamt 2-mal geändert.
Re: zelleninhalt auf zellen aufteilen
Gut dann das ganze auf die klassische Art:
starte geany mit einer neuen Datei, kopiere folgendes hinein:
und speichere in den Pfad: /home/ <Dein Benutzername> /.config/libreoffice/4/user/Scripts/python/<Dateiname_deiner_Wahl>.py
starte geany mit einer neuen Datei, kopiere folgendes hinein:
Code: Alles auswählen
from functools import partial
def v_stack_second(*_):
doc = XSCRIPTCONTEXT.getDocument()
sel = doc.CurrentSelection
sheet = sel.Spreadsheet
out = []
for first, second in sel.DataArray:
out.extend([(first, part) for part in second.split(",")])
cursor = sheet.createCursorByRange(sel)
cursor.collapseToSize(len(out[0]), len(out))
cursor.DataArray = out
def revert_cross_table_keys(*_):
"""
diese Funktion gehört zu https://www.libreoffice-forum.de/viewtopic.php?f=6&t=38746
"""
doc = XSCRIPTCONTEXT.getDocument()
sel = doc.CurrentSelection
sheet = sel.Spreadsheet
header_row, *data = sel.DataArray
header_row = header_row[1:]
p_zip = partial(zip, header_row)
out = []
for key, *row_data in data:
out.extend([(key, c_key) for c_key, entry in p_zip(row_data) if entry])
cursor = sheet.createCursorByRange(sel)
cursor.gotoOffset(len(header_row)+2, 0)
cursor.collapseToSize(len(out[0]),len(out))
cursor.DataArray = out
Zuletzt geändert von karolus am Mi 29. Mär 2023, 14:47, insgesamt 1-mal geändert.
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: zelleninhalt auf zellen aufteilen
Alles gut, s.o. !
Danke!
Danke!
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.