Excel splitten - verschiedene Header

Hallo zusammen,

ich habe mal wieder etwas spezielles.
Ich möchte eine Excel mit verschiedenen „Header“ Zeilen aufteilen. Unten seht ihr, wie die Datei aussieht.

In allen Steps mit denen ich es versucht habe bekomme ich nur Fehler, oder eine Spalte zurück. Irgendwas mache ich hier wohl falsch. Die Datei möchte ich selbst vorher nicht verändern, da diese automatisch so übertragen wird.

Im Prinzip brauche ich also als Ergebnis zwei Spreadsheets mit den jeweils grau hinterlegten Feldern als Header.

Jemand eine Idee oder einen Tip der mich weiterbringt?

VG
Enrico

Hallo Enrico,

du kannst einfach mit zwei Excelreadern auf dieselbe Datei zugreifen.

In dem zweiten Reader setzt du die startLineNo einfach auf den Anfang der zweiten Tabelle.

Danach musst du nur noch anhand irgendeiner Bedingung in der ersten Tabelle auf die richtigen Zeilen filtern. Dort sind nämlich auch die Zeilen aus der zweiten Tabelle enthalten.

Wichtig: Für startLineNo zählt man nur gefüllte Zeilen. Obwohl die zweite Tabelle in meiner Beispieldatei in Zeile 12 anfangen, musste ich die Variable auf 7 (entspricht der 8ten gefüllten Zeile, weil 0-based indexing!) setzen.
grafik

Gruß
Gustav

Hallo Gustav,

danke erstmal dafür. Da die Zeilennummer der zweiten Tabelle aber unterschiedlich beginnen kann kann ich den Wert nicht fest eintragen. Dieser Wert Variiert quasi.

Man müsste also vorher irgendwie die Zeilennummer herausfinden, wo es wieder los geht.

VG
Enrico

Hallo Enrico,

Das sollte auch machbar sein.

Du liest erstmal die erste Tabelle ein und filterst diese auf die richtigen Zeilen.


In einem TextHTMLWriter berechnest du nun die Anzahl der Zeilen in der Tabelle. Das Ergebnis aus dem TextHTMLWriter benutzt du im zweiten Excelreader als startLineNo.

Du musst wahrscheinlich einen größeren Wert als 1 addieren müssen, damit das richtige Ergebnis rauskommt. Das kommt darauf an, wieviele gefüllte Spalten mit uninteressanten Daten vorhanden sind.

Gruß
Gustav

1 „Gefällt mir“

Hallo Gustav,

aber auch hier müsste ich mit Anzahl arbeiten. Das hilft mir bei der Automatisierung nicht wirklich.
Kann man denn auf Spaltennamen gehen?

Wie du in meinem Excel Beispiel siehst, könnte man zum Beispiel die erste Tabelle an Spalte B „Zahlungsdatum“ und die zweite Tabelle an Spalte B „Rechnungsnummer“ eingrenzen. Das Spreadsheet müsste jeweils in dieser Zeile als Header starten. So zumindest meine Theorie, aber ich weiß noch nicht, wie ich das umsetzen kann.

VG
Enrico

Hi Enrico,

ich denke die Idee von Gustav geht in die richtige Richtung.

Das könnte auch funktionieren. Meine Idee dazu wäre folgendes:

  1. ExcelDatei vollständig im ExcelReader einlesen (mit hasHeader=Nein)

  2. einen Mapper dahinter der die Zeilennummer hinzufügt

  3. Filter für „Zahlungsdatum“
    Col_1!?trim == "Zahlungsdatum"

  4. TextHtmlWriter für Ausgabe der Start Zeilennummer (der Zahlungen)
    ${output@SpreadsheetFilter_3.firstRow("Zeilennummer")?number -1 }

  5. ExcelReader mit der verknüpften Startzeile

  6. Da müsste dann noch ein Filter dahinter der die Rechnungsdaten aus dem Ergebnis Spreadsheet entfernt.
    Das könnte man wieder über die Startzeile der Rechnungsdaten lösen. Eventuell gibt es aber noch eine einfachere Möglichkeit

→ Schritt 3 - 5 analog für die Rechnungsdaten wiederholen

Mein kompletter „Testflow“:

Vielleicht hilft dir das weiter.

VG Torsten