Excel CSV Export mit Gruppierung
In diesem Beispiel geht es darum mit Hilfe des MS Excel Adapters folgende Excel Arbeitsmappe zu lesen und über den TextFile Adapter in eine CSV Textdatei zu exportieren. Herausforderung dabei ist, dass die teilweise bis zu 3 Excel Zeilen einer Bestellung zu einer Zeile in der CSV Textdatei gruppiert werden sollen.
Alle Beispiele sind als fertige Definition Bestandteil des FlowHeaters und können direkt über den Designer geöffnet werden!
Achtung: Versuchen Sie nicht dieses Beispiel zu verstehen, wenn Ihnen die Funktionsweise des FlowHeaters noch nicht ganz klar ist. Zum erlernen der FlowHeater Funktionalitäten sind die HelloWorld 1, 2 und 3 Beispiele sowie die anderen einfacheren Beispiele besser geeignet.
Ausgangslage
TextFile Adapter die Daten in eine CSV Textdatei. Herzstück dieser Definition ist der Fitter bzw. hier im Bild (Mitte) dargestellt der Designer.
Hier sehen Sie die Fertige Definition, nicht erschrecken ist im Prinzip ganz Einfach! Auf der READ (linken) Seite liest der Excel Adapter die MS Excel Arbeitsmappe "Expert-Excel-CSV-Export.xls" ein. Auf der WRITE (rechten) Seite schreibt derWie werden die Daten aufbereitet?
Die Beschreibung geht von links nach rechts sowie von oben nach unten.
Bestellnummer Markierung 1) Das Excel Feld Bestellnummer wird zuerst in einem .NET Script Heater gereicht. Der Heater merkt sich die letzte Bestellnummer und falls ein leerer Wert ankommt, (zweiter bzw. dritter Excel Datensatz zu einer Bestellung) gibt der Heater die gemerkte Bestellnummer zurück. Dieser Wert wandert dann zum GroupBy Heater. Der GroupBy Heater entscheidet anhand gleicher Eingangswerte ob der Datensatz gruppiert bzw. zusammengefasst werden muss. Weiter geht die Excel Bestellnummer zu zwei Clone Heatern und dann ins CSV Feld Bestellnummer. Hinweis: Die Clone Heater werden nur dazu benutzt um die Definition etwas übersichtlicher zu gestallten.
Fahrzeugcode Markierung 2) Im Excel Feld Fahrzeugcode sind bis zu 3 unterschiedliche Informationen untergebracht. In der CSV Datei sollen diese in die Felder Fahrzeugcode1-3 ausgegeben werden. Um dies zu erreichen verwenden wir den AutoID Heater mit Gruppierungsfunktion. Der Ausgang des Heaters sieht auch schon anders aus. Hinweis: Die Gruppierungsfunktion können Sie über die Eigenschaften bzw. das Kontextmenü (Klick mit rechter Maustaste auf den Heater) einstellen. Der AutoID Heater zählt für jede Gruppierung beginnend von 1 hoch. Dieser Wert wandert dann zu 3 If-Then-Else Heater. Hier wird anhand der Bedingungen "Wenn Eingangswert = 1, 2 bzw. 3" entschieden in welches Feld der FlowHeater den Wert schrieben soll. Hinweis: Die If-Then-Else Bedingung können Sie sich über einen Doppelklick auf den Heater anzeigen lassen.
Farbe Markierung 3) Hier sind wie im Excel Feld Fahrzeugcode bis zu 3 unterschiedliche Informationen untergebracht. Die einzelnen Excel Werte sollen aber in der CSV Textdatei nicht in unterschiedliche CSV Spalten sondern die Werte sollen mit einem Leerzeichen voneinander getrennt in in das CSV Feld Farbe geschrieben werden. Um dies zu bewerkstelligen verwenden wir den String Append Heater mit Gruppierungsfunktion, einzustellen über die Eigenschaften des Heaters. Dem Heater wird einmal ein Leerzeichen über den X-Value Heater übergeben (1. Parameter) und als 2. Parameter erhält der Heater das Excel Feld Farbe. Der String Append Heater gibt den erzeugten String an den Trim Heater weiter. Dieser entfernt das 1. Leerzeichen und stellt den Output in das CSV Feld Farbe ein.
Wie kommen jetzt die 3 Excel Zeilen Werte in eine CSV Spalte!
Durchlauf 1: [Leerzeichen]Wert1
Durchlauf 2: Wert1[Leerzeichen]Wert2
Durchlauf 3: Wert1[Leerzeichen]Wert2[Leerzeichen]Wert3
Der Trim Heater wird nur als Lückenbüßer verwendet um das erste Leerzeichen, das im ersten Durchlauf hinzugefügt wurde, wieder zu entfernen!
Bestellklasse: Das Feld Bestellklasse wird über den String/Zeichenfolgen Append Heater (mit eingeschalteter Gruppierungsfunktion) zum TextFile Adpater durchgereicht. Dieses Vorgehen ist in diesem Fall notwendig, da in diesem Feld lediglich der erste Satz gefüllt ist und sonst beim zweiten bzw. dritten Satz das CSV Feld mit einem Leereintrag überschrieben werden würde. Sie Fragen sich jetzt bestimmt, warum dies nicht für das Excel Feld Bestellnummer angewendet wurde, oder? Ganz einfach, weil auf diesem Feld die Gruppierung erst durchgeführt werden muss!
Kundendetails: Gleiches Vorgehen wie für das Excel Feld Farbe!
Liefertermin: Gleiches Vorgehen wir für das Excel Feld Bestellklasse, nur zusätzlich mit einem Clone Heater zwecks der Übersichtlichkeit.
Verkäufer: Gleiches Vorgehen wir für das Excel Feld Bestellklasse, nur zusätzlich mit einem Clone Heater zwecks der Übersichtlichkeit.
Das CSV Feld Anzahl Excel Zeilen: Hier wird demonstriert, wie der Heater AutoID die Anzahl der Gruppierungszeilen pro Gruppierung ausgibt.
Microsoft®, Windows®, Excel® sind eingetragene Markenzeichen der Microsoft Corporation