MS DOS ASCII CSV zu Windows ANSI FlatFile konvertieren
Mit diesem Beispiel möchten wir Ihnen zeigen wie einfach mit dem TextFile Adapter Textdateien in andere Formate (Codepage und Gebietsschemen) umgewandelt werden können und dabei auch noch dynamische Berechnungen vollzogen werden.
Das Beispiel können Sie direkt im FlowHeater über den Menüeintrag "Beispiele->TextFileAdapter->ASCII CSV zu Windows ANSI FlatFile" öffnen. Den umgekehrten Weg (ANSI zu ASCII) können Sie sich hier ansehen.
Hinweis: Auf dem gleichen Weg funktioniert auch die Umwandlung nach UNICODE (utf7, utf8, ...), EBCDIC, etc.
Ausgangspunkt
Nehmen wir an, wir haben eine MS DOS ASCII CSV Datei von einem Lieferanten aus den USA erhalten. In der CSV Textdatei ist das Datum im Format m.d.yyyy (Monat.Tag.Jahr). Zahlen sind im Format - Komma Tausendertrennzeichen, Punkt Dezimaltrennzeichen und das Währungssymbol ist das Dollar Zeichen 1,000.34 $
Zusätzlich sind in der ASCII CSV Datei Umlaute (passt zwar nicht zur USA, ist aber ein gutes Beispiel) vorhanden und zu guter Letzt ist die Beschreibung 1 und 2 in einem Feld nur mit dem Zeichen "#" voneinander getrennt. Um es noch etwas schwieriger zu machen kommt in der Beschreibung des Öfteren das CSV Trennzeichen vor!
Öffnen Sie die CSV Datei "ExamplesDETextFileAdapterascii-csv.txt" mal mit einem Windows Text Editor z.B. Notepad. Hier sehen sie nur komische Zeichen für die Umlaute!
Ergebnis
Aus der oben beschriebenen CSV Textdatei wollen wir nun ein normale Windows ANSI Flatfile generieren. Die Felder werden dabei über feste Längen/Breiten voneinander getrennt. Wir wollen für die Ausgabe deutsches Format verwenden, sowie sollen die Preise nach Euro umgerechnet werden. Zusätzlich soll gleich der VK Preis mit 23% Aufschlag berechnet werden.
Was müssen wir tun
Öffnen Sie den FlowHeater Designer und legen über den Menübefehl "Datei->Neu" eine neue FlowHeater Definition an. Stellen Sie im Adapter Auswahldialog auf beiden Seiten den TextFileAdapter ein.
auf der READ (linke) Seite
- öffnen Sie den Configurator für die READ (linke) Seite
- tragen Sie für den Dateinamen ascii-csv.txt ein
- aktivieren Sie das Kontrollkästchen "Erste Zeile enthält Feldnamen"
- wählen Sie für Codepage "850, ibm850,Westeuropäisch (DOS)" aus. Eigentlich wäre für die Staaten Codepage 437 richtiger, wenn Sie wollen können Sie auch die nehmen.
- wechseln Sie auf den Tab "Trennzeichen" und wählen als Textbegrenzung "abc" aus
- wechseln Sie auf den Tab "Format" und wählen für das Gebietsschema "Englisch (USA)" aus
Das war´s auf dieser Seite.
auf der WRITE (rechte) Seite
- öffnen Sie den Configurator für den WRITE (rechte) Seite
- tragen Sie für den Dateinamen z.B. output.txt ein
- aktivieren Sie das Kontrollkästchen "Erste Zeile enthält Feldnamen"
- Klicken Sie bei Abgrenzung auf "Feste Breite"
- stellen Sie sicher, dass für Codepage "1252, Windows-1252,Westeuropäisch (Windows)" eingestellt ist
- wechseln Sie auf den TAB "Felder / Datentypen" und klicken den Button Felder von Read Adapter übernehmen.
- ändern Sie den Feldnamen von Beschreibung auf Beschreibung1
- ändern Sie den Feldnamen von Preis auf EK
- fügen Sie 2 neue Felder "Beschreibung2" und "VK" hinzu
- Stellen Sie für die Felder EK und VK den Datentype Currency ein
- Stellen Sie für das Feld Datum den Datentype Date ein
- wechseln Sie nun auf den TAB "Format" und vergewissern sich ob für Gebietsschema auch "Deutsch (Deutschland)" eingestellt ist
das war´s auch auf dieser Seite.
Abschluss
jetzt brauchen Sie nur noch die einzelnen Felder miteinander verbinden bzw. ein paar Heater dazwischen schalten. Wie´s geht wird in den HelloWorld (1, 2, 3) Beispielen erklärt, oder schauen Sie sich die Fertige Definition im FlowHeater an.