[Gelöst]: Lange formatierte Zeichenketten ersetzen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

MeckOffice
**
Beiträge: 20
Registriert: Sa, 30.07.2016 11:23

[Gelöst]: Lange formatierte Zeichenketten ersetzen

Beitrag von MeckOffice »

Hallo zusammen,

zwei Fragen zu Calc:

1) Lange Zeichenketten ersetzen
Beispiel eines Zelleninhalts
======================================= Anf
Essen und Trinken,





Wellness / Gesundheit,





Workshop / Seminar,
======================================= Ende
Die Zelle wurde gefüllt durch Copy/Paste aus einer Webseite und enthält wahrscheinlich (mir unbekannte) Steuerzeichen. Ich habe versucht, den obigen Inhalt in "Suchen" einzugeben und wollte dann folgenden Inhalt erhalten:

======================================= Anf
Essen und Trinken, Wellness / Gesundheit, Workshop / Seminar,
======================================= Ende

Ich habe alle möglichen Einstellungen probiert. Nichts hat geklappt. Kopiere ich den Zelleninhalt und gebe ihn unter "Suchen" ein und klicke auf "Suchen", dann lautet die Anzeige "Suchbegriff nicht gefunden", obwohl etliche Zellen diese identische Zeichenkette enthalten.

Die einzige Manipulations-Möglichkeit gelang bisher durch manuelles Ctrl-X (Ausschneiden) des ungewünschten Zellenteils jeder einzelnen Zelle, was bei mehr als 100 Zellen etwas mühsam ist.


2) Makro in "Englisch" möglich?
Am liebsten wäre mir ein Macro, das ich immer wieder benutzen kann. Ich kenne mich aber nur mit MS-Office-Makros aus. Die LO-Makros sind doch etwas unterschiedlich. Kann mir da jemand, der sich auskennt, ein Beispiel-Makro (möglichst in Englisch !!) für diesen Zweck auf die Schnelle zusammenstellen. Es muß nicht perfekt sein, nur die Richtung ungefähr, dann helfe ich mir schon selbst.

Danke erstmal!

..
Zuletzt geändert von MeckOffice am Mo, 10.06.2019 22:18, insgesamt 1-mal geändert.
------------------------------------------------
Win7-Prof. (64x) mit LO 5.4.7.2
Linux-Mint (64x) mit LO 6.2.4.2
------------------------------------------------
Mondblatt24
*******
Beiträge: 1136
Registriert: So, 14.05.2017 16:11

Re: Frage: Lange formatierte Zeichenketten ersetzen

Beitrag von Mondblatt24 »

Hallo,
Die Zelle wurde gefüllt durch Copy/Paste aus einer Webseite...
Ein Link zu der Webseite würde auch helfen.

VG Peter
Win 11 (x64) ▪ 24.2.2.2 (x64) ▪ AOO Portable 4.1.15
Wurde die Frage zutreffend beantwortet bitte den Betreff der Eingangsfrage mit [GELÖST] ergänzen. Beschreibung
MeckOffice
**
Beiträge: 20
Registriert: Sa, 30.07.2016 11:23

Re: Frage: Lange formatierte Zeichenketten ersetzen

Beitrag von MeckOffice »

Danke zusammen,
anbei als Anhang eine Muster-Excel-Datei mit der Spalte, um die es geht, also Löschung der langen Leerräume.

Zusätzlich bin ich gerade dabei, mich in die LO-Makrotechnik einzuarbeiten, die sich doch stark von MS-VBA unterscheidet, um derartige Aufgaben künftig schneller lösen zu können. Dabei bin ich auf die Möglichkeit gestoßen, Python statt Star-Basic-Skripte in LO zu verwenden, was allerdings zusätzliche Lernzeit für Python bedeuten würde.

Ich wollte zwar Python ohnehin lernen, weil es mir wie ein Plattform-übergreifendes (Win & Linux) Vis.Basic erscheint, weiß aber nicht, wie groß der Lernaufwand dafür ist und ob ich mich damit momentan zeitlich nicht etwas verzettele.
Randbemerkung: Neben Vis.Basic, MS-VBA und der gesamten MS-Off.Palette ich noch einige Erfahrung mit PHP, MySQL, Turbo-Pascal/Delphi

Hat jemand Erfahrung mit Python und kann mir ein paar Hinweise geben?

Danke!
Dateianhänge
Muster_279.xlsx
(9.62 KiB) 111-mal heruntergeladen
Zuletzt geändert von MeckOffice am Mo, 10.06.2019 10:49, insgesamt 1-mal geändert.
------------------------------------------------
Win7-Prof. (64x) mit LO 5.4.7.2
Linux-Mint (64x) mit LO 6.2.4.2
------------------------------------------------
MeckOffice
**
Beiträge: 20
Registriert: Sa, 30.07.2016 11:23

Re: Frage: Lange formatierte Zeichenketten ersetzen

Beitrag von MeckOffice »

Vorrangig ist mir zunächst die möglichst einfache Beseitigung der Leeräume in der Tabelle ohne viel Handarbeit!
Alles andere kommt danach.
------------------------------------------------
Win7-Prof. (64x) mit LO 5.4.7.2
Linux-Mint (64x) mit LO 6.2.4.2
------------------------------------------------
MeckOffice
**
Beiträge: 20
Registriert: Sa, 30.07.2016 11:23

Re: Frage: Lange formatierte Zeichenketten ersetzen

Beitrag von MeckOffice »

Spukt es hier?
1) Beim Ankllicken des Benachrichtig.Links in meiner Mail erscheint
Screenshot_2019-06-10 OpenOffice info - Information.png
Screenshot_2019-06-10 OpenOffice info - Information.png (12.74 KiB) 4103 mal betrachtet
2) Der Beitrag von Mondblatt24 erscheint hier nicht mehr
3) Meine Antwort darauf ebenfalls nicht.
??? Rätselhaft !!
------------------------------------------------
Win7-Prof. (64x) mit LO 5.4.7.2
Linux-Mint (64x) mit LO 6.2.4.2
------------------------------------------------
Mondblatt24
*******
Beiträge: 1136
Registriert: So, 14.05.2017 16:11

Re: Frage: Lange formatierte Zeichenketten ersetzen

Beitrag von Mondblatt24 »

Hallo MeckOffice,
2) Der Beitrag von Mondblatt24 erscheint hier nicht mehr
Ja, weil ich ihn gelöscht habe nachdem Du den Anhang oben eingefügt hast, und der Beitrag so gegenstandslos war.

Zu Deiner Frage:
Probier folgendes aus:
Suchen: \n|\s{2}
Ersetzen: bleibt leer

Gruß Peter

PS: Wie ich darauf komme? Ganz einfach eine Zelle kopiert und unformatiert in Writer eingefügt. So habe ich gesehen was für Formatierungszeichen (Strg+F10) sich in der Zelle versteckt haben.
Dateianhänge
So sehen die Zellen aus.odt
(8.29 KiB) 103-mal heruntergeladen
Win 11 (x64) ▪ 24.2.2.2 (x64) ▪ AOO Portable 4.1.15
Wurde die Frage zutreffend beantwortet bitte den Betreff der Eingangsfrage mit [GELÖST] ergänzen. Beschreibung
MeckOffice
**
Beiträge: 20
Registriert: Sa, 30.07.2016 11:23

Re: Frage: Lange formatierte Zeichenketten ersetzen

Beitrag von MeckOffice »

Danke, aber leider noch kein Erfolg! So sieht meine Suche aus. Anzeige: Suchbegriff nicht gefunden!
LO-StrngSuche_01.JPG
LO-StrngSuche_01.JPG (41.47 KiB) 4068 mal betrachtet
Bin ich zu blöd?
Hast Du es selbst mal probiert an meiner Muster-Tabelle?
Könnte es an irgendwelchen sonstigen Einstellungen liegen?
Zuletzt geändert von MeckOffice am Mo, 10.06.2019 11:47, insgesamt 1-mal geändert.
------------------------------------------------
Win7-Prof. (64x) mit LO 5.4.7.2
Linux-Mint (64x) mit LO 6.2.4.2
------------------------------------------------
Mondblatt24
*******
Beiträge: 1136
Registriert: So, 14.05.2017 16:11

Re: Frage: Lange formatierte Zeichenketten ersetzen

Beitrag von Mondblatt24 »

Hallo,
Reguläre Ausdrücke ankreuzen.

Peter
Win 11 (x64) ▪ 24.2.2.2 (x64) ▪ AOO Portable 4.1.15
Wurde die Frage zutreffend beantwortet bitte den Betreff der Eingangsfrage mit [GELÖST] ergänzen. Beschreibung
MeckOffice
**
Beiträge: 20
Registriert: Sa, 30.07.2016 11:23

Re: Frage: Lange formatierte Zeichenketten ersetzen

Beitrag von MeckOffice »

Hallo Peter,
danke vielmals, es hat endlich geklappt!
Also bin ich doch wohl zu blöd! Dabei hatte ich doch eigentlich sämtliche Knöpfe gedrückt ...usw.
Jetzt muß ich mir dann doch ein Makro basteln, damit ich nicht jedesmal den Kopf einschalten muß! :-x
MfG, Kurt
------------------------------------------------
Win7-Prof. (64x) mit LO 5.4.7.2
Linux-Mint (64x) mit LO 6.2.4.2
------------------------------------------------
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Frage: Lange formatierte Zeichenketten ersetzen

Beitrag von Stephan »

z.B.:

Code: Alles auswählen

Sub Zellen_bereinigen()
  blatt = ThisComponent.CurrentController.ActiveSheet
  rd = blatt.createReplaceDescriptor()
  rd.setSearchString("\n|\s{2}")
  rd.setReplaceString("")
  rd.SearchWords = False      
  rd.SearchRegularExpression = True
  blatt.replaceAll(rd)
  MsgBox "Fertig"
End Sub
Gruß
Stephan
MeckOffice
**
Beiträge: 20
Registriert: Sa, 30.07.2016 11:23

Re: Frage: Lange formatierte Zeichenketten ersetzen

Beitrag von MeckOffice »

Ja, super, Stefan!
Was für ein Service! Danke Dir!
Das ist jetzt wahrscheinlich Star.Basic!
Wenn ich hoffentlich demnächst mehr Zeit habe, werde ich das mal mit Python versuchen.
Einstweilen herzlichen Dank an Euch. Ich empfehle Euch weiter!
MfG, Kurt
------------------------------------------------
Win7-Prof. (64x) mit LO 5.4.7.2
Linux-Mint (64x) mit LO 6.2.4.2
------------------------------------------------
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Frage: Lange formatierte Zeichenketten ersetzen

Beitrag von Karolus »

Hallo

Da das jetzt komplett auf API-methoden aufsetzt, geht das in python praktisch genauso:

Code: Alles auswählen

def Zellen_bereinigen():
    doc = XSCRIPTCONTEXT.getDocument()
    blatt = doc.CurrentController.ActiveSheet
    rd = blatt.createReplaceDescriptor()
    rd.setSearchString("\n|\s{2}")
    rd.setReplaceString("")
    rd.SearchWords = False      
    rd.SearchRegularExpression = True
    blatt.replaceAll(rd)
Die Einrückung dient in python nicht nur der Lesbarkeit, sondern ist auch semantischer Bestandteil der Sprache, ( und soll per Konvention mit 4 Leerzeichen pro Einrückungsebene erfolgen ).
Die beiden Wahrheitswerte müssen genauso geschrieben werden wie im Quelltext.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
MeckOffice
**
Beiträge: 20
Registriert: Sa, 30.07.2016 11:23

Re: Frage: Lange formatierte Zeichenketten ersetzen

Beitrag von MeckOffice »

Karolus hat geschrieben: Mo, 10.06.2019 17:20 Die Einrückung dient in python nicht nur der Lesbarkeit, sondern ist auch semantischer Bestandteil der Sprache, ( und soll per Konvention mit 4 Leerzeichen pro Einrückungsebene erfolgen ).
Die beiden Wahrheitswerte müssen genauso geschrieben werden wie im Quelltext.
Danke auch Dir Karolus!
Die beiden Code-Blöcke haben ja eine erstaunliche Ähnlichkeit.
Wenn ich richtig verstehe, kennzeichnet die Einrückung die Zusammengehörigkeit des Code-Blocks und ersetzt dadurch quasi das "end sub" als Block-Ende im Basic.

Mit der Schreibweise der Wahrheitswerte meinst Du sicher die beiden Leerzeichen vor und hinter dem "=" Gleichheitszeichen, die in anderen Sprachen unbedeutend sind. Richtig?

D.h., man muss insgesamt pixelgenau arbeiten. Ich hoffe, es gibt Editoren, die dabei etwas helfen. Arbeitest Du mit PyCharm oder mit welchem/r Editor/IDE? Und das Python-Plugin übernimmt die Übersetzung gegenüber LibreOffice. Richtig?


.
------------------------------------------------
Win7-Prof. (64x) mit LO 5.4.7.2
Linux-Mint (64x) mit LO 6.2.4.2
------------------------------------------------
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Frage: Lange formatierte Zeichenketten ersetzen

Beitrag von Karolus »

MeckOffice hat geschrieben: Mo, 10.06.2019 18:02 Die beiden Code-Blöcke haben ja eine erstaunliche Ähnlichkeit.
Wenn ich richtig verstehe, kennzeichnet die Einrückung die Zusammengehörigkeit des Code-Blocks und ersetzt dadurch quasi das "end sub" als Block-Ende im Basic.
Richtig, das gilt auch für alle anderen Arten von Blöcken.
MeckOffice hat geschrieben: Mo, 10.06.2019 18:02 Mit der Schreibweise der Wahrheitswerte meinst Du sicher die beiden Leerzeichen vor und hinter dem "=" Gleichheitszeichen, die in anderen Sprachen unbedeutend sind. Richtig?
Falsch, WhiteSpace ist dem python-Interpreter weitgehend egal, solange dadurch nicht die Einrückungssemantik verletzt wird.
Ich meine Schreibweise von True|False. In Basic könntest du z.B. false, FALSE oder faLSE hinschreiben, der Interpreter würde es geduldig hinnehmen.

MeckOffice hat geschrieben: Mo, 10.06.2019 18:02 D.h., man muss insgesamt pixelgenau arbeiten. Ich hoffe, es gibt Editoren, die dabei etwas helfen. Arbeitest Du mit PyCharm oder mit welchem/r Editor/IDE? Und das Python-Plugin übernimmt die Übersetzung gegenüber LibreOffice. Richtig?.
Ich würde jetzt nicht sagen pixelgenau ;-)
PyCharm ist eine hervorragende IDE aber nicht gerade leichtgewichtig.
Momentan "arbeite" ich mit auf einem Raspberry mit Rasbian-OS da muss der mitgelieferte Thonny-Editor reichen.
Ansonsten nehme ich sehr gerne auch eine interaktive Jupyter-notebook** -instanz um mal schnell ein paar Zeilen Code für LO zu schreiben, und das erledigt auch die Aufgabe per Code-vervollständigung die korrekte Schreibweise zu liefern.

**siehe hier

Was du jetzt genau mit python-plugin meinst, weiss ich nicht, aber die eigentlichen Schnittstellen zwischen LO und python sind vmtl. die Binärdateien uno.(so|exe) res. pyuno.(so|exe) ??
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
MeckOffice
**
Beiträge: 20
Registriert: Sa, 30.07.2016 11:23

Re: Frage: Lange formatierte Zeichenketten ersetzen

Beitrag von MeckOffice »

Danke sehr, Karolus, für die ingesamt sehr hilfreichen Informationen!
Einen schönen Rest-Feiertag wünsche ich noch.
MfG, Kurt
------------------------------------------------
Win7-Prof. (64x) mit LO 5.4.7.2
Linux-Mint (64x) mit LO 6.2.4.2
------------------------------------------------
Antworten