Lokomotivdaten aus iTrain in LibreOffice Calc importieren

Die Exportieren-Funktion in iTrain exportiert u.a. die Lokomotiv-Daten ins CSV-Format, welches man in diverse Tabellen-Kalkulationsprogramme wie LibreOffice Calc importieren kann. Die resultierende CSV-Datei enthält aber nur einen Teil der Daten. Um an die kompletten Daten zu kommen, muss der Datenimport in Calc über einen speziellen XML-Filter vorgenommen werden. Das Vorhalten der Daten in einer Tabelle hat den Vorteil, dass man einerseits mehrere Lokomotiven besser vergleichen kann, als das in der Eingabemaske von iTrain möglich ist. Andererseits lassen sich die Daten nach bestimmten Kriterien filtern. Nicht zuletzt kann man die Daten auch einfacher in andere Datenbanken übertragen, um z.B. seine Sammlung zu erfassen. So müssen die Daten nicht doppelt eingegeben werden.

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.

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

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.

Vorgehensweise

Dieser Filter muss jetzt in LibreOffice integriert werden.

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-Lokomotiven 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-Lokomotiven"
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 Lokomotiven 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: