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

Zeilen löschen

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Antworten
Purpur
Beiträge: 59
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: 2539
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
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Purpur
Beiträge: 59
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 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