Ich habe eine Konsolenanwendung, die Daten von einem Webdienst abruft. Es wird die Antwort auf eine Excel-Datei schreiben. Meine Logik ist in Ordnung mit einer Datenzeile, aber wenn es mehr als eine ist, muss die Excel-Datei richtig geschrieben werden.Schleife in der Liste der Datenzeile für Excel
int i = 0;
int j = 0;
int k = 0;
foreach (var response in responseList)
{
dt = response;
for (i = 0; i <= dt.Rows.Count - 1; i++)
{
for (j = 0; j <= dt.Columns.Count - 1; j++)
{
xlWorkSheet.Cells[i + 1, j + 1] = dt.Rows[i].ItemArray[j].ToString();
}
}
}
Mein Problem mit diesem Code ist, dass die Excel-Zeilen, die immer gleich sind geschrieben werden.
Beispiel: Erste Antwort hat 20 Zeilen, zweite Antwort hat 10 Zeilen. Aber nach der Schleife erzeugte mein Excel nur 20 Reihen. Es scheint, als ob nicht alle Daten geschrieben werden. Irgendwelche Ideen warum?
EDIT
habe ich versucht, den Code unten, aber immer noch kein Glück.
int jOffset = 0;
int iOffset = 0;
foreach (var response in responseList)
{
dt = response;
for (i = 0; i <= dt.Rows.Count - 1; i++)
{
for (j = 0; j <= dt.Columns.Count - 1; j++)
{
xlWorkSheet.Cells[i + iOffset + 1, j + jOffset + 1] = dt.Rows[i].ItemArray[j].ToString();
}
}
jOffset++;
iOffset++;
}
Weil Sie jedes Mal von '0' beginnen. Sie überschreiben jedes Mal Ihre vorherigen Antworten. Sie müssen 'iOffset' und' jOffset' speichern und dann schreiben: 'xlWorkSheet.Cells [i + iOffset + 1, j + jOffset + 1] = dt.Rows [i] .ItemArray [j] .ToString();' . Dann, natürlich, inkrementieren "iOffset" und "jOffset" wie nötig – Rob
@Rob - siehe bearbeiten, ich bekomme die gleiche Zeilenanzahl. –
wo ist der Schnitt? –