CV-Werte der Lokdecoder aus iTrain in LibreOffice Calc importieren

Im iTrain-Forum hat ein Modellbahnfreund eine Excel-Lösung für das Importieren von CV-Werten aus iTrain vorgestellt. Eine gute Idee angesichts der Tatsache, dass iTrain selbst beim CSV-Export die Decodereinstellungen außen vor läßt. Da bei solchen Aufgaben die Kompatibilität zwischen MS Office und LibreOffice gegen Null geht, bleibt die Lösung nur Excel-Nutzern vorbehalten. Es musste also eine Lösung für den nicht unerheblichen Rest her.

Voraussetzungen

Die iTrain-Datei darf nicht im zip-Format vorliegen. Entweder Ihr entpackt die tcd-Datei von Hand oder Ihr speichert sie aus iTrain heraus unkomprimiert ab.

Da die in LibreOffice enthaltenen XML-Filter mit dem iTrain-Format nicht umgehen können, musste ein eigens für diesen Zweck geschriebener her. Die Anweisungen, wie die Daten aus iTrain ausgelesen und in Calc importiert werden, stehen in einer XSLT-Datei. Ladet Euch diesen Filter hier herunter und speichert ihn an einem Ort Eurer Wahl.

Eine Möglichkeit, wie man auch mit den komprimierten iTrain-Dateien (tcdz) arbeiten kann, hab ich hier vorgestellt.

Vorgehensweise

Dieser Filter muss jetzt in LibreOffice integriert werden.

  • Im Reiter Umwandlung wählt Ihr als Import-Filter über die Durchsuchen-Schaltfläche die gerade gespeicherte XSLT-Datei aus.
  • dann den Dialog schließen und LibreOffice neu starten
  • Datenimport von Hand

    Öffnet LibreOffice und geht auf das Menü Datei Öffnen. Im sich öffnenden Dialogfeld stellt Ihr das Dateiformat von Alle Dateien auf iTrain-Lokdekoder um.

    Die Liste kann unter Umständen sehr lang sein. Dann wählt Ihr Eure iTrain-tcd-Datei aus und klickt auf Öffnen.

    Datenimport per Makro

    Ihr könnt Euch auch ein Makro für den Datenimport anlegen. Das Makro könnte folgenden Code enthalten:

    sub iTrain_Lokdecoder_import
    rem ----------------------------------------------------------------------
    rem Variablen definieren
    dim oDlg As Object ,oDoc As Object, sPath As String
    rem Rückgabewerte des Datei-Öffnen-Dialogs
    dim DateiListe() 
    rem Eigenschaften für loadComponentFromURL setzen
    dim properties(0) as new com.sun.star.beans.PropertyValue
    properties(0).Name = "FilterName"
    rem der Name des Filters so wie er in Calc eingetragen ist
    properties(0).Value = "iTrain Lokdecoder"
    rem Dialog zum öffnen der Datei initialisieren
    dim MyFilterListe(0) As New com.sun.star.beans.StringPair
    rem Filterliste füllen
    MyFilterListe(0).first="iTrain Layouts"
    MyFilterListe(0).second="*.tcd"
    rem Pfad setzen
    sPath=ConvertToUrl("/home/uwe/iTrain/layouts")
    rem ######################################################
    rem für Windows z.B.:
    rem sPath=ConvertToUrl("C:\iTrain\layouts")
    rem ######################################################
    rem Dialog anzeigen
    oDlg=createUnoService("com.sun.star.ui.dialogs.FilePicker")
    With oDlg
    	.setMultiSelectionMode(false)
    	.appendFilter("Alle Dateien", "*.*")
    	.appendFilterGroup("iTrain", MyFilterListe())
    	.setDisplayDirectory(sPath)
    	.setCurrentFilter("iTrain Layouts")
    	.setTitle("iTrain Lokdecoder importieren")
    End with
    oDlg.execute
    rem Datei öffnen
    DateiListe=oDlg.getFiles()
    doc = StarDesktop.loadComponentFromURL(DateiListe(0), "_blank", 0, properties())
    end sub
            

    Der Vorteil der Makrolösung liegt darin, dass der Datei-Öffnen-Dialog gleich den richtigen Dateifilter enthält und Ihr Euch gleich im richtigen Verzeichnis zur Dateiauswahl befindet.

    Wie Ihr das Makro in Menüs oder Symbolleisten einbindet könnt Ihr hier nachlesen.

    Die fertige Tabelle kann dann so aussehen: