- Beiträge: 33
Zeile mit n - Spalten in mehrere Zeilen mit je einem Wert aufteilen
- Uwe Behrens
- Autor
- Abwesend
- Benutzer
-
Weniger
Mehr
19 Stunden 57 Minuten her #5346
von Uwe Behrens
Zeile mit n - Spalten in mehrere Zeilen mit je einem Wert aufteilen wurde erstellt von Uwe Behrens
Hallo Robert,
lange nichts mehr voneinander gehört. Ich habe da mal ein kleines Problemchen, oder ich sehe den Wald vor lauter Bäumen nicht. Ich habe eine Excel-Quelldatei. In dieser Datei sind n-Zeilen enthalten. In den Spalten wird vom Kunden eine Matrix ausgefüllt. Aus jedem Eintrag dieser Matrix möchte ich dann eine neue Zeile generieren. Ist das möglich? Denke ich da gerade verkehrt?
Hier ein Beispiel:
Excel-Beispiel:
1 Baustein Wert_1 Wert_2 Wert_3 Wert_4 Wert_5
2 UPG6 100 120 130 400 601
3 AGAHG 222 55 66
4 UHJ 873
Ausgabewunsch:
UPG6;100
UPG6;120
UPG6;130
UPG6;400
UPG6;601
AGAHG;222
AGAHG;55
AGAHG;66
UHJ;873
Ich hoffe das war ein wenig verständlich. Die Anzahl der Spalten könnte variieren.
Gibt es da etwas um dieses Problem zu lösen? Die KI sprach sogar von einer "array-function". Das sagte mir aber hier nichts.
Danke schon einmal vorab.
Gruß
Uwe
lange nichts mehr voneinander gehört. Ich habe da mal ein kleines Problemchen, oder ich sehe den Wald vor lauter Bäumen nicht. Ich habe eine Excel-Quelldatei. In dieser Datei sind n-Zeilen enthalten. In den Spalten wird vom Kunden eine Matrix ausgefüllt. Aus jedem Eintrag dieser Matrix möchte ich dann eine neue Zeile generieren. Ist das möglich? Denke ich da gerade verkehrt?
Hier ein Beispiel:
Excel-Beispiel:
1 Baustein Wert_1 Wert_2 Wert_3 Wert_4 Wert_5
2 UPG6 100 120 130 400 601
3 AGAHG 222 55 66
4 UHJ 873
Ausgabewunsch:
UPG6;100
UPG6;120
UPG6;130
UPG6;400
UPG6;601
AGAHG;222
AGAHG;55
AGAHG;66
UHJ;873
Ich hoffe das war ein wenig verständlich. Die Anzahl der Spalten könnte variieren.
Gibt es da etwas um dieses Problem zu lösen? Die KI sprach sogar von einer "array-function". Das sagte mir aber hier nichts.
Danke schon einmal vorab.
Gruß
Uwe
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
-
- Offline
- Administrator
-
Weniger
Mehr
- Beiträge: 2072
4 Stunden 8 Minuten her #5347
von FlowHeater-Team
gruß
Robert Stark
FlowHeater-Team antwortete auf Zeile mit n - Spalten in mehrere Zeilen mit je einem Wert aufteilen
Hallo Uwe,
ja, das geht natürlich. Du musst aber eine max. Anzahl an Spalten definieren, die berücksichtigt werden soll.
Du liest als erstes deine Excel Datei ein und kopierts jeden Datensatz x-Mal (=max. Anzahl Spalten -1). Das machst du mit dem GroupOut Heater . Über einen X-Value Heater gibst du die max. Anzahl der Spalten – 1 an. So werden schon mal die Zeilen kopiert. Dann benötigts du noch einen .NET Script Heater und u.s. kleines C# Skript das pro Zeile die gerade verarbeitete Spalte auf die WRITE Seite ausgibt. Die aktuell kopierte Zeile wird über den AutoID Heater ermittelt, hier musst du in den Optionen auswählen, dass sich das Zählen auf den GroupOut bzw. auf den kopierten Zeilen bezieht.
Das Skript gibt dann einfach den Wert der Zeile=Ursprungsspalte zurück. Die Spalten müssen dazu mit dem .NET Script Heater verbunden werden.
Die Ausgabe wird in eine InMemory Adapter Tabelle geschrieben. Hier stehen dann alle Wert inkl. der Leeren! Das kannst du jetzt in einem zweiten Verarbeitungsschritt mit dem Filter Heater filtern und ausgeben.
Im Anhang findest du ein kleines Beispiel dazu. Das Beispiel verwendet anstelle des Excel Adapter den TextFile Adapter , kann aber 1:1 auch für Excel verwendet werden!
PS: Bei der Erstellung des Beispiels bin ich auf ein kleines Problem gestoßen. Theoretisch könntest du das Filtern auch gleich im ersten Verarbeitungsschritt machen. Funktioniert aktuell nicht da der AutoID Heater in Zusammenhang mit dem Filter und GroupOut nicht korrekt zählt!
C# Skript Code um aktuelle Excel Spalte zurückzugeben
ja, das geht natürlich. Du musst aber eine max. Anzahl an Spalten definieren, die berücksichtigt werden soll.
Du liest als erstes deine Excel Datei ein und kopierts jeden Datensatz x-Mal (=max. Anzahl Spalten -1). Das machst du mit dem GroupOut Heater . Über einen X-Value Heater gibst du die max. Anzahl der Spalten – 1 an. So werden schon mal die Zeilen kopiert. Dann benötigts du noch einen .NET Script Heater und u.s. kleines C# Skript das pro Zeile die gerade verarbeitete Spalte auf die WRITE Seite ausgibt. Die aktuell kopierte Zeile wird über den AutoID Heater ermittelt, hier musst du in den Optionen auswählen, dass sich das Zählen auf den GroupOut bzw. auf den kopierten Zeilen bezieht.
Das Skript gibt dann einfach den Wert der Zeile=Ursprungsspalte zurück. Die Spalten müssen dazu mit dem .NET Script Heater verbunden werden.
Die Ausgabe wird in eine InMemory Adapter Tabelle geschrieben. Hier stehen dann alle Wert inkl. der Leeren! Das kannst du jetzt in einem zweiten Verarbeitungsschritt mit dem Filter Heater filtern und ausgeben.
Im Anhang findest du ein kleines Beispiel dazu. Das Beispiel verwendet anstelle des Excel Adapter den TextFile Adapter , kann aber 1:1 auch für Excel verwendet werden!
PS: Bei der Erstellung des Beispiels bin ich auf ein kleines Problem gestoßen. Theoretisch könntest du das Filtern auch gleich im ersten Verarbeitungsschritt machen. Funktioniert aktuell nicht da der AutoID Heater in Zusammenhang mit dem Filter und GroupOut nicht korrekt zählt!
C# Skript Code um aktuelle Excel Spalte zurückzugeben
Code:
public object DoWork()
{
// Aktuelle Spaltenindex holen
int i = (int)InValues[0].GetInt();
return InValues[i]; // Spalte anhand Spaltenindex zurückgeben
}
gruß
Robert Stark
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Uwe Behrens
- Autor
- Abwesend
- Benutzer
-
Weniger
Mehr
- Beiträge: 33
1 Minute her #5348
von Uwe Behrens
Uwe Behrens antwortete auf Zeile mit n - Spalten in mehrere Zeilen mit je einem Wert aufteilen
Hallo Robert,
vielen Dank! Das hat so in meiner Excel-Tabelle funktioniert. Jetzt muss nur noch der Kunde eine winzige Sache vorbereiten und fertig.
Schönes Wochenende!
Gruß
Uwe
vielen Dank! Das hat so in meiner Excel-Tabelle funktioniert. Jetzt muss nur noch der Kunde eine winzige Sache vorbereiten und fertig.
Schönes Wochenende!
Gruß
Uwe
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
Ladezeit der Seite: 0.298 Sekunden