🍀 Das LibreOffice Forum braucht HEUTE Ihre Hilfe! 🍀
❤️ Spenden Sie jetzt und sichern Sie die Zukunft unseres LibreOffice-Forums ❤️
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen lieben Dank!

🙏 DANKE >> << DANKE 🙏

>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig und kostenlos ihr Wissen teilen.<<
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

Zeilen löschen

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Antworten
Purpur
Beiträge: 65
Registriert: Mi 2. Jan 2013, 13:35

Zeilen löschen

Beitrag von Purpur » Mo 13. Mai 2013, 09:22

Hallo zusammen,

LibreOffive Version 3.6.6.2 (Build ID: f969faf)

Ich habe eine Datei aus einem csv-Import von einigen tausend Zeilen länge. Es handelt sich um eine Trackpointliste aus einer gpx-Datei.

Hier einige Beispielzeilen aus den Mitte der Datei:

Bild

Die rot markierten Zeilen geben Höhen- und Zeitwerte an. Diese Zeilen sind für mich uninteressant und sollen aus der Liste gelöscht werden. Am Ende soll ein Trackpoint so aussehen:

<trkpt lat="59.957149510000001" lon="10.964907650000001">
</trkpt>

Der Tag </trkpt> könnte noch an das vorhergehende Zeilenende verschoben werden, so dass pro Zeile ein Trackpoint erscheint (ist aber nicht zwingend):

<trkpt lat="59.957149510000001" lon="10.964907650000001"></trkpt>

Leider kommt erschwehrend hinzu, dass vor den Tags <trkpt ...> und </trkpt> 2 Leerzeichen stehen, vor den zu löschenden Tags <ele> und <time> sogar 4. Für die Funktionalität der Trackpointliste spielt das keine Rolle, vielleicht aber für das Suchen in der Liste.

Kennt jemand von euch eine Möglichkeit, die rot markierten Zeilen aus der Datei zu löschen?
Leider beherrsche ich die Skriptsprache von LO nicht, sonst könnte ich mir whrscheinlich selbst weiter helfen.

Danke für eure Zeit und euer Mitdenken,
Purpur

bst
Beiträge: 35
Registriert: Mi 25. Apr 2012, 13:40
Wohnort: Ilsfeld

Re: Zeilen löschen

Beitrag von bst » Mo 13. Mai 2013, 09:43

Morgen,

hier in LO 4.0.2.2 funktioniert folgender VBA-Code, der löscht alles außer den Zeilen die nach optionalen Leerzeichen mit "<trkpt" beginnen.

cu, Bernd
--

Code: Alles auswählen

Option VBASupport 1

Sub Main
	dim i as long, s as string
	
	for i = cells(rows.count,1).end(xlup).row to 1 Step -1
		s = trim(cells(i,1).value
		if not (s like "<trkpt*") then rows(i).delete
	next
End Sub

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

Re: Zeilen löschen

Beitrag von karolus » Mo 13. Mai 2013, 10:03

Hallo

→Daten→Filter→Standardfilter

.... .*</?trkpt.*

mit:
[x]regulärer Ausdruck
und
[x]Ausgabe nach ...<wohin du willst>




Karolus
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

Purpur
Beiträge: 65
Registriert: Mi 2. Jan 2013, 13:35

Re: Zeilen löschen

Beitrag von Purpur » Mo 13. Mai 2013, 11:17

Hallo zusammen,

@ karolus
Danke - deine Lösung per RegEx hat mein Problem gelöst.

@ bernd
Dein Skript hat bei mir einen Laufzeitfehler in Zeile 4 gebracht. Vielleicht liegt das an den verschiedenen LO-Versionen (obwohl ich meine (WinXP) erst vor 1 Stunde auf die aktuelle Version gebracht habe).
Dennoch danke für deinen Einsatz.

Mit besten Grüßen,
Purpur

bst
Beiträge: 35
Registriert: Mi 25. Apr 2012, 13:40
Wohnort: Ilsfeld

Re: Zeilen löschen

Beitrag von bst » Mo 13. Mai 2013, 11:53

Nochmals Hi,

und FWIW, keine Ahnung warum. Falls Dich eine Script-Lösung überhaupt noch interessieren sollte könntest Du es mal so probieren.

cu, Bernd
--

Code: Alles auswählen

Option Explicit

Sub Main
   Dim oSheet as Object, oCellCursor as Object, oCellRange as Object
   Dim i as Long, iLastRow as Long, s as String

   oSheet = ThisComponent.CurrentController.getActiveSheet()
   oCellCursor = oSheet.createCursor()
   oCellCursor.GotoEndOfUsedArea(True)
   iLastRow = oCellCursor.getRangeAddress.EndRow

   for i = iLastRow to 0 Step -1
      s = ltrim(oSheet.getCellByPosition(0, i).string)
      if Not (s Like "<trkpt*") then oSheet.getRows.removeByIndex(i,1)
   next
End Sub


An alle, die das LibreOffice-Forum gern nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das laufende.
Einfach per Kreditkarte oder PayPal. Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.



❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten