• Ich möchte hier ein Skript des Users pixelsearch aus dem englischen Forum, sowie eine von mir übersetzte Kurzfassung der Beschreibung, präsentieren (mit dem Autor abgesprochen).


    Zum einen halte ich es für sehr nützlich, zum anderen war ich ein wenig bei der Entwicklung behilflich ;).

    Wer Anregungen oder Bugs mitteilen will, aber nicht im EN-Forum registriert ist, darf das gerne hier machen. Gleiches gilt, falls die eigenen Englischkenntnisse etwas eingerostet sein sollten. Ich werde relevantes Feedback an pixelsearch weiterleiten.

    Titel : CSV File Editor

    Version : 901k (16.Dez. 2019)

    Autor : pixelsearch - https://www.autoitscript.com/forum/profile/105807-pixelsearch/

    Hauptthread im englischen Forum : csv-file-editor

    -> Download und Danksagungen(Credits) ==> siehe Hauptthread

    Beschreibung :

    Bei diesem Skript handelt es sich um ein ausführbares Programm, nicht um eine UDF.

    Diese "Mustervorlage" wurde aber so gestaltet, dass relevante Teile auch in eigenen Skripten, die sich mit Listenansichten befassen, wiederverwendbar sein sollten.

    Das Skript ermöglicht es, durch eine Listenansicht(Listview) zu wandern und mit den 4 Richtungstasten ein beliebiges Element auszuwählen und zu editieren.

    Mit der ESC-Taste kann man das Feld ohne Änderungen verlassen.

    Die ENTER-Taste wird ebenfalls verwaltet und arbeitet in der Listenansicht wie ein Doppelklick mit der Maus.

    Weiterhin ist es möglich, Zeilen innerhalb der Liste mit der INS(EINF)-Taste einzufügen und mit der DEL(ENTF)-Taste zu entfernen.

    (zuvor muss aber immer erst der Import einer .CSV-Datei stattfinden)

    Die Bedienung ist i.W. selbsterklärend, ich gehe daher nur auf einige Punkte ein :

    1. Import options : First row = headers (default = checked)

    ==> Enthält die importierte Datei in der ersten Zeile Überschriften, dann CHECKED beibehalten (das ist in der Beispiel-CSV der Fall).

    ==> Enthält die importierte Datei in der ersten Zeile keine Überschriften, dann CHECKED entfernen. Die Kopfzeilen der Listenansicht werden besetzt mit : Col 0 | Col 1 | Col 2 ...

    Anmerkung : Beim Export werden Überschriften (sofern vorhanden) immer beibehalten !

    2. Selection color : (default = light blue)

    Damit wird die Windows-Farbauswahl geöffnet, und man kann die Hintergrundfarbe der ausgewählten Zellen ändern.

    3. Chained Edit ? (default = No)

    ==> "No" => Wenn die Bearbeitung einer Zelle beendet wird (ENTER-Taste), dann bleibt

    die Zelle markiert.

    ==> "Horizontally" => Ist diese Option aktiviert, wird die Editierung automatisch mit der Zelle auf der rechten Seite fortgesetzt.

    ==> "Vertically" => Ist diese Option aktiviert, wird die Editierung automatisch mit der untenstehenden Zelle fortgesetzt.

    Diese Funktion kann sehr nützlich sein, wenn man Zellen einer ganzen Spalte (vertikal) oder Zellen einer Zeile (horizontal) editieren möchte.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Hallo Musashi.

    Interessante Sache!

    CSV Dateien sind bei mir zwar nicht so "beliebt" wie RegExp's, gehören aber normlerweise zu den Dingen, die ich erledige und froh bin, wenn's fertig ist. Der CSV File Editor hingegen macht richtig Lust, sich mal ein paar CSV Dateien vorzuknöpfen!

    Enorm finde ich, in welch kurzer Zeit sich das Programm entwickelt hat. Wenn ich es richtig verstanden habe, war es zu Anfang 'a simple "wander through listview"' und hat sich nun zu einem ausgewachsenen CSV File Editor gewandelt. Coole Sache!

    So wie sich das in den Credits liest scheinst du dem Autor einen guten Motivationschub gegeben zu haben. So kenne ich dich! :thumbup:

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • autoiter

    Gags zu erklären ist immer ein bisschen schwierig. Hierbei handelt es sich um einen Insider-Gag. Wer mich ein wenig kennt, der weiß, dass ich mich mit RegExp's ein wenig schwer tue. Deshalb habe ich "beliebt" in Anführungszeichen geschrieben, um zu zeigen, dass es sich um Ironie handelt.

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Neue Version 901p (25. Dezember 2019) verfügbar, siehe :

    https://www.autoitscript.com/forum/applicat…nt.php?id=63305

    Neu :

    * Die Reihenfolge der Spalten (columns) kann jetzt umsortiert werden.

    Dazu mit dem Mauszeiger auf die gewünschte Spaltenüberschrift gehen und die linke Maustaste betätigen (nicht loslassen). Jetzt die Spalte nach rechts oder links an die gewünschte Position verschieben (Maustaste loslassen). Die Spalte (hier z.B. 'zip') weit genug an die neue Stelle ziehen :

    Die exportierte CSV-Datei wird entsprechend der neuen Spaltenreihenfolge gespeichert.

    * Die Liste der Delimiter (Feldtrennzeichen) wurde um | (Pipe bzw. 'senkrechter Strich') erweitert.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Neue Version 901r (29. Dezember 2019) verfügbar, siehe :

    https://www.autoitscript.com/forum/applicat…nt.php?id=63337

    Sollten keine Fehler auftauchen, gilt das Projekt damit als abgeschlossen.

    Neu :

    * Sortierung auf allen Spalten möglich (mit rechter Maustaste auf die Spaltenüberschrift klicken) :

    Es wird empfohlen, vor der Sortierung einen Export (als Backup) durchzuführen.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • (soviel zum Thema : "damit gilt das Projekt als abgeschlossen" ^^)

    Neue Version 901t (03. Januar 2020) verfügbar, siehe :

    https://www.autoitscript.com/forum/applicat…nt.php?id=63394

    Das Kontextmenü wurde erweitert (öffnen mit Rechtsklick auf den jeweiligen Spaltentitel) :

    In der Version 901s (Zwischenupdate) :

    Die numerische Sortierung ist in den meisten Fällen in Ordnung, aber gelegentlich benötigt man auch eine String-Sortierung (wie im folgenden Bild gezeigt) :

    In der Version 901t (momentan aktuell - enthält natürlich die 901s) :

    (es wird empfohlen, vor dem Sortieren oder Löschen einen Export durchzuführen -> "Export now ?")

    * "Rename Header" -> Umbenennen des Spaltentitels (Leereingaben oder identische Titel für mehrere Spalten werden abgefangen)

    * "Insert Column (before)" -> fügt eine leere Spalte vor die akt. Spalte ein ==> siehe Besonderheit

    * "Insert Column (after)" -> fügt eine leere Spalte hinter die akt. Spalte ein

    * "Delete Column" -> löscht die akt. Spalte (mit Sicherheitsabfrage)

    Besonderheit :

    Microsoft hat es etwas schwierig gemacht, vor der Spalte 0 eine Spalte nativ einzufügen. Wer dies möchte, kann einfach eine Spalte hinter Spalte 0 einfügen und sie nach ganz links ziehen, um die beiden linken Spalten zu vertauschen.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Besonderheit :

    Microsoft hat es etwas schwierig gemacht, vor der Spalte 0 eine Spalte nativ einzufügen.

    "etwas schwierig" ließe sich sicher mit "etwas Aufwand" meistern... wobei ich nicht verstehe, was daran schwierig sein soll.

    "nativ einzufügen" - was soll das denn bedeuten?

    In seinem Script sehe ich nichts von nativ beim Einfügen einer Spalte... denn das macht er ja mit:

    _GUICtrlListView_InsertColumn($g_idListview, $iCol_Insert, $sHeader_TextNew, 100)

    Wenn $iCol_Insert = 0 ist, wird die neue Spalte doch vor der bereits vorhanden ersten Spalte eingefügt. Und wieso schreibt er ein paar Zeilen darüber als Kommentar: "never insert a column before 1st column !"? Warum nicht?

  • Jetzt verstehe ich es... sehr tückisch!

    Ich denke aber, so kann man es fixen...

  • Neue Version 901u (06. Januar 2020) verfügbar, siehe :

    https://www.autoitscript.com/forum/applicat…nt.php?id=63419

    * Sortiervariante "natural sort" wurde hinzugefügt

    -->Danke an jchd für die Idee und Melba23 für die Funktion ArrayMultiColSort()

    Obwohl "natural sort" nicht vollständig implementiert ist, sollte sie funktionieren wenn Zahlen vor Buchstaben stehen :


    Testdatei : Sacramento real estate transactions

    Das Ergebnis lässt sich hier z.B. anhand der Spalte 'street' nachvollziehen.

    Sortierdauer und Aktualisierung der Listenansicht sind schnell, ggf. wegen der neuen Funktion _BufferCreate(), die hier beschrieben und jetzt zum Skript hinzugefügt wurde.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Neue Version 901x (14. Januar 2020 / ein kleiner Fix wurde am 15.Januar hinzugefügt) verfügbar, siehe :

    https://www.autoitscript.com/forum/applicat…nt.php?id=63504

    (enthält auch die Erweiterungen der Version 901w vom 10. Januar 2020)

    * Der Button "Close File" erlaubt es, andere csv-Dateien während der gleichen Sitzung zu importieren.

    * Die Importgeschwindigkeit wurde verbessert.

    * Die Anzahl der Zeilen wird nun direkt unter der Listenansicht angezeigt.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    Einmal editiert, zuletzt von Musashi (15. Januar 2020 um 12:09) aus folgendem Grund: neuer Link

  • Der Link ist falsch... die ID stimmt nicht (mehr).

    Danke, ich habe den Link aktualisiert :thumbup:.

    pixelsearch hat mir gerade im engl. Forum eine PM geschickt, dass er einen kleinen Fix hinzugefügt hat, dafür aber keinen neuen Beitrag erstellen wollte.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Danke Bitnugger und Musashi :thumbup:

    Es ist ein kleines Problem, an das ich mich erinnern werde. Denn das bedeutet, dass ich den Download-Link nach dem Hinzufügen einer Verbesserung nicht ungestraft ändern kann, ohne eine neue Nachricht zu erstellen.

    (Ich hoffe, die maschinelle Übersetzung von Google ist keine Katastrophe)