🙏 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. 🤗

(gelöst) zelleninhalt auf zellen aufteilen

CALC ist die Tabellenkalkulation, die Sie immer wollten.
michaa7
Beiträge: 118
Registriert: Do 27. Okt 2011, 16:12

Re: zelleninhalt auf zellen aufteilen

Beitrag von michaa7 » Mi 29. Mär 2023, 12:03

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?

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

Re: zelleninhalt auf zellen aufteilen

Beitrag von karolus » Mi 29. Mär 2023, 12:45

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«
apso_neuesmodul.png
apso_neuesmodul.png (28.18 KiB) 839 mal betrachtet
Danach markierst du »micha« und wählst →menü→bearbeiten:
Modul_bearbeiten.png
Modul_bearbeiten.png (28.75 KiB) 839 mal betrachtet
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.
micha.zip
(938 Bytes) 76-mal heruntergeladen
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)

michaa7
Beiträge: 118
Registriert: Do 27. Okt 2011, 16:12

Re: zelleninhalt auf zellen aufteilen

Beitrag von michaa7 » Mi 29. Mär 2023, 14:03

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.
Zuletzt geändert von michaa7 am Mi 29. Mär 2023, 14:27, insgesamt 2-mal geändert.

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

Re: zelleninhalt auf zellen aufteilen

Beitrag von karolus » Mi 29. Mär 2023, 14:17

Gut dann das ganze auf die klassische Art:
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
und speichere in den Pfad: /home/ <Dein Benutzername> /.config/libreoffice/4/user/Scripts/python/<Dateiname_deiner_Wahl>.py
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)

michaa7
Beiträge: 118
Registriert: Do 27. Okt 2011, 16:12

Re: zelleninhalt auf zellen aufteilen

Beitrag von michaa7 » Mi 29. Mär 2023, 14:28

Alles gut, s.o. !

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.



Antworten