Windows ANSI FlatFile zu MS DOS ASCII CSV 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->Windows ANSI FlatFile zu ASCII CSV" öffnen. Den umgekehrten Weg (ASCII zu ANSI) können Sie sich hier ansehen.
Hinweis: Auf dem gleichen weg funktioniert auch die Umwandlung nach UNICODE (utf7, utf8, ...), EBCDIC, etc.
Soll / Ziel
Wir haben ein Windows ANSI Flatfile und sollen für einen Lieferanten in den Staaten (USA) eine MS DOS ASCII CSV Textdatei erstellen. Das Datumsformat ist für die USA m.d.yyyy (also Monat.Tag.Jahr). Der Lieferant möchte Zahlen in folgenden Format haben 1,000.23 $ - Dezimaltrennzeichen ist der Punkt, Tausendertrennzeichen ist das Komma sowie soll als Währungssymbol das Dollar Zeichen verwendet werden. Das ist momentan noch kein Problem, diese Zeichen sind alle im ASCII Zeichensatz vorhanden. In unsere Datei sind zusätzlich Umlaute (in den Staaten können die zwar immer noch nichts mit anfangen aber es ist ein gutes Beispiel) vorhanden, diese müssen von ANSI Codepage 1252 nach MS DOS Codepage 850 umgewandelt werden.
Was müssen wir tun
öffnen Sie den FlowHeater 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 "ansi-flatfile.txt" ein
- aktivieren Sie das Kontrollkästchen "Erste Zeile enthält Feldnamen" und beantworten Sie die Frage ob die Feldnamen aus der Datei übernommen werden sollen mit nein.
- stellen Sie sicher, dass unter Codepage "1252, Windows-1252,Westeuropäisch (Windows)" eingetragen ist
- Klicken Sie bei Abgrenzung auf "Feste Breite"
- klicken Sie im unteren Anzeige Bereich mit der Maus auf das Lineal um weitere Feldbegrenzer einzufügen bzw. verschieben Sie diese so, dass die Feldbreiten passen. Alternativ dazu können Sie die Feld Breiten/Längen auch über den TAB "Felder / Datentypen" setzen.
- wechseln Sie auf den TAB "Felder / Datentypen" und vergeben Sie für die Felder vernünftige Namen
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"
- 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 aus CSV Textbegrenzer "abc" aus
- wechseln Sie auf den TAB "Felder / Datentypen" und fügen folgende Felder inkl. der angegeben FlowHeater Datentypen hinzu.
ID (INT)
Umlaute (String)
Beschreibung (String)
Datum (Date)
Preis (Currency)
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.