Verbundene Zellen in eine Zelle umwandeln

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Verbundene Zellen in eine Zelle umwandeln

Beitrag von Karolus »

Hallo
Ich hab eine Rückfrage - repräsentiert das angehängte Beispiels-Dokument deine Problemstellung?
Vorher_Nachher_beispiel.ods
(11.92 KiB) 86-mal heruntergeladen
Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Feelisreal
Beiträge: 8
Registriert: Di, 06.03.2012 10:31

Re: Verbundene Zellen in eine Zelle umwandeln

Beitrag von Feelisreal »

Hallo Karo,
vielen Dank. Dein Beispiel gibt die Problematik ganz gut wieder. Es kommt noch hinzu, dass auch leere Zellen möglich sind (siehe Beispiel). Außerdem ist mir jetzt aufgefallen, dass eine änderung des Anordnungsmusters einer Seite in meinem ursprünglichen PDF-File entspricht und somit die Spaltenüberschrift dann immer wieder auftaucht (siehe Beispiel). Diese Zeilen automatisiert zu löschen ist ja nicht schwer. Ich dachte nur, dass das umgekehrt vielleicht hilfreich sein könnte?

Danke und Gruß

Felix
Dateianhänge
Beispiel 1.ods
(11.21 KiB) 80-mal heruntergeladen
Benutzeravatar
miesepeter
********
Beiträge: 2240
Registriert: Sa, 10.05.2008 15:05
Wohnort: Bayern

Re: Verbundene Zellen in eine Zelle umwandeln

Beitrag von miesepeter »

Hallo,

die einzige Möglichkeit, die ich früher für eine problematische PDF-Tabelle fand, vernünftig in eine Calc-Tabelle umzuwandeln, war mit Hilfe des OCR-Programms Abbyy Finereader. Das Programm kostet aber Geld. Ob das eine Alternative für dich ist?

Ciao und viel Erfolg
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Verbundene Zellen in eine Zelle umwandeln

Beitrag von Karolus »

Hallo
Folgendes Script löscht alle leeren und verdeckte Zellen im markierten Bereich, und verschiebt die Zeile rechts dieser Zellen nach links.

Code: Alles auswählen

context = XSCRIPTCONTEXT


def rangeselection():
    doc = context.getDocument()
    sel = doc.getCurrentSelection()
    sheet  = sel.getSpreadsheet()
    return doc , sel , sheet




def normalize_merged_area():
    """
    hebt die Zusammenfassung von Zellen
    in einer Zeile auf und verschiebt die Zeile
    rechts davon nach links
    """
    doc, sel, sheet = rangeselection()
    cell = sheet.getCellByPosition
    address = sel.getRangeAddress()
    scol, ecol = address.StartColumn, address.EndColumn
    srow, erow = address.StartRow, address.EndRow
    for row in range(srow, erow+1):
        notmerged = [ col for col in range(scol, ecol+1)
                      if not (cell(col, row).getIsMerged()
                      or cell(col,row).getString())]
        for c in notmerged[::-1]:
            sheet.removeRange(cell(c,row).getRangeAddress() , 2) 
                   # 2  < css.sheet.CellDeleteMode.LEFT   ^^^^^
            
Testen kannst du mit dem angehängten Beispielsdoc
Zeilenweise_normalisieren.ods
(13.68 KiB) 86-mal heruntergeladen
Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Feelisreal
Beiträge: 8
Registriert: Di, 06.03.2012 10:31

Re: Verbundene Zellen in eine Zelle umwandeln

Beitrag von Feelisreal »

Hallo zusammen,
vielen Dank schonmal Karo. Bin erst jetzt dazu gekommen, dass ganze mal auszuprobieren. Leider bin ich an ziemlich einfachen aber grundlegenden Fragen gescheitert, die ich auch mit Hilfe von Google nicht lösen konnte. Wie genau kann ich dieses Script jetzt in meiner Datei als Makro ausführen? Habe zuerst versucht das Script (handelt es sich um ein BASIC? Bin da völlig grün hinter den Ohren) in meinem Dokument bei den Makros als neues Makro einzufügen. Da fand OO jedoch einige Fehler. Habe dann die Beispieldatei geöffnet (die war schon normalisiert?!) und versucht das Scribt von dort zu kopieren. Leider zeigt OO mir in "Macro-Manager" nur das Standartmodul an in dem sich nur der Main script befindet. Den habe ich auch schonmal in meine Datei eingefügt und ausgeführt. Nach einer viertelstunde Sanduhr habe ich es dann aber aufgegeben. Ich würde mich sehr freuen, wenn du mir eine Schritt-für-Schritt Erklärung geben könntest, wie ich das Script in meine Datei bekomme. Ein Link zu einer Erklärung würde auch schon reichen. Ich habe keinen gefunden, da ich ja gar nicht weiß um welche Art von Script es sich hier handelt.

Liebe Grüße und vielen Dank für das Script

Felix
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Verbundene Zellen in eine Zelle umwandeln

Beitrag von Karolus »

Hallo

Entschuldige, die Sub 'Main' war nur ein kurzer erfolgloser Test in Basic, ich hab schlicht vergessen das Teil zu löschen.

Das eigentliche Script ist in Python geschrieben, und sollte auch bei dir ausführbar sein***, über :
→Extras→Makros→Makros ausführen..→zeilenweise_normalisieren→normalize.py→normalize_merged_area
oder alternativ:
→Extras→Makros→Makros verwalten→Python→zeilenweise_normalisieren→normalize.py→normalize_merged_area >'ausführen' <

Falls das funktioniert kannst du damit auch in gleichzeitig geöffneten anderen .ods Dateien arbeiten.

***vorher bitte den ganzen Bereich markieren der zusammengefasste Zellen enthält.
Habe zuerst versucht das Script (handelt es sich um ein BASIC? Bin da völlig grün hinter den Ohren) in meinem Dokument bei den Makros als neues Makro einzufügen. Da fand OO jedoch einige Fehler.
Python-quellcode kann nicht vom Basic-interpreter ausgeführt werden.
Ich würde mich sehr freuen, wenn du mir eine Schritt-für-Schritt Erklärung geben könntest, wie ich das Script in meine Datei bekomme.
Wie bereits oben geschrieben, ist das Script auch aus anderen Dateien benutzbar, solange die Scriptdatei geöffnet ist.
Ansonsten kannst du im Ordner 'Scripts' deiner Benutzerconfiguration ( siehe →Extras→Optionen→OOo→Pfade '....3/user/Scripts ) einen Ordner 'python' anlegen und dort eine Datei 'name_deiner_wahl.py' mit dem geposteten Quelltext darin abspeichern. Benutze einen einfachen Texteditor zum Erstellen der .py Datei und achte darauf das alle Zeileneinrückungen so erhalten bleiben wie oben im Quellcode. Danach ist das Script auch unter ~~Meine Makros... zu finden.

Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Feelisreal
Beiträge: 8
Registriert: Di, 06.03.2012 10:31

Re: Verbundene Zellen in eine Zelle umwandeln

Beitrag von Feelisreal »

Genial, das scheint zu funktionieren. Habe gerade mal an ein paar Zeilen getestet und sogar die leeren Zellen bleiben erhalten! Jetzt lasse ich den script gerade mal über den gesammten Datensatz laufen (natürlich eine Kopie, falls was schiefgeht). Das kann jetzt ne Weile dauern. Damit hast du mir allerdings ein paar Tage arbeit erspart. Vielen Dank! Ich finde das ja immer super, wenn man in Foren kostenlose Hilfe von Fachleuten bekommt andererseits bin ich der Meinung, Arbeit sollte vernünftig entlohnt werden. Als Master Student kann ich da finanziell wenig machen, ich habe mir aber überlegt, dass ich mich in Zukunft dafür stark machen will, dass in unseren Forschungsprojekten ein/e Informatiker/in für solche Aufgaben eingestellt wird. So kann ich dann vielleicht auf indirektem Wege etwas zurück geben. Ich schreibe gleich nochmal, wenn ich fertig bin eine kurze Rückmeldung
Feelisreal
Beiträge: 8
Registriert: Di, 06.03.2012 10:31

Re: Verbundene Zellen in eine Zelle umwandeln

Beitrag von Feelisreal »

Also nochmal kurze Rückmeldung. Habe das mal den ganzen Tag laufen lassen und hat einwandtfrei funktioniert. Vielen Dank nochmal!!
(P.S: Thema kann meinetwegen geschlossen werden)
Antworten