2016-08-02 28 views
1

Ich versuche, einen Wert in der Kopfzeile der Tabelle für die spätere Verwendung als neue Spalte Wert zu speichern. DiesesTalend: Speichern Variable für die spätere Verwendung

ist die reduzierte Version mit dem Wert (XYZ) in der Kopfzeile:

original report

Der Wert im Header muss für neuen Spalt CODE verwendet werden: enter image description here

Das ist mein Design ist:

enter image description here

tFilterRow_1 i s verwendet, um Zeilen ohne Werte in A-, B- und C-Spalten zurückzuweisen. Es gibt eine bedingte in tJavaRow_1 eine globale Variable zu setzen:

if(String.valueOf(row1.col_a).equals("CODE:")){ 
    globalMap.putIfAbsent("code", row1.col_b); 
} 

Der Var Ausdruck in tMap_1 die globale Variable zu erhalten ist:

(String)globalMap.get("code") 

Der Var "Code" zu Spalte zugeordnet wird Code“ "aber ich bin immer diese Ausgabe:

a1|b1|c1| 
a2|b2|c2| 
a3|b3|c3| 

Was verpasst wird oder gibt es einen besseren Ansatz, um dieses escenario zu erreichen? Vielen Dank im Voraus.

Antwort

1

Kurze Antwort: I tJavaRow verwenden Sie in diesem Fall row4 die input_row oder die tatsächliche rowN.

Längere Antwort, wie ich es tun würde.

Ich würde tun, ist der Excel-Fluss in AS-IS. Mit einigen Java-Tricks können wir einfach die ersten Zeilen überspringen und dann den Rest des Flusses durchlaufen lassen. So kann der Filter + Tjavarow Combo durch einen tJavaFlex ersetzt werden.

tJavaFlex ich tun würde:

beginnen:

boolean contentFound = false; 

Haupt

if(input_row.col1 != null && input_row.col1.equalsIgnoreCase("Code:")) { 
    globalMap.put("code",input_row.col2); 
} 
if(input_row.col1 != null && input_row.col1.equalsIgnoreCase("Column A:")) { 
    contentFound = true; 
} else { 
    if(false == contentFound) continue; 
} 

diese Weise werden Sie einfach die ersten Datensätze (dh Header) überspringen und nur kümmern uns um die tatsächlichen Daten.

+0

Ich fand meinen (dummen) Fehler, die Spalten wurden in der ursprünglichen XLSX-Datei kombiniert, dann hatten die Bedingungen auf tFilterRow Bezug auf falsche Spalten. Ich teste deine Vorgehensweise und funktioniert perfekt, Danke! – Leonardo

Verwandte Themen