Gibt es eine Implementierung, die den Inhalt einer DataTable in eine CSV-Datei exportiert?
Hallo @JoshClose Ich glaube, Wagimo hat nach einer Möglichkeit gesucht, DataTables in CSV-Dateien zu schreiben. Unter dem von Ihnen bereitgestellten Link sehe ich nur Informationen zum Lesen einer CSV-Datei in eine DataTable, nicht jedoch umgekehrt. Verpasse ich etwas?
@johnyesberg Ups , danke. Ich muss das der Dokumentation hinzufügen.
Sie könnten die Zeilen und Spalten so durchgehen.
void Main()
{
var dt = new DataTable();
dt.Columns.Add("Id", typeof(int));
dt.Columns.Add("Name", typeof(string));
var row = dt.NewRow();
row["Id"] = 1;
row["Name"] = "one";
dt.Rows.Add(row);
row = dt.NewRow();
row["Id"] = 2;
row["Name"] = "two";
dt.Rows.Add(row);
using (var writer = new StringWriter())
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
foreach (DataColumn dc in dt.Columns)
{
csv.WriteField(dc.ColumnName);
}
csv.NextRecord();
foreach (DataRow dr in dt.Rows)
{
foreach (DataColumn dc in dt.Columns)
{
csv.WriteField(dr[dc]);
}
csv.NextRecord();
}
writer.ToString().Dump();
}
}
Oder Sie könnten ein DataReader
und es so.
void Main()
{
var dt = new DataTable();
dt.Columns.Add("Id", typeof(int));
dt.Columns.Add("Name", typeof(string));
var row = dt.NewRow();
row["Id"] = 1;
row["Name"] = "one";
dt.Rows.Add(row);
row = dt.NewRow();
row["Id"] = 2;
row["Name"] = "two";
dt.Rows.Add(row);
using (var writer = new StringWriter())
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
using (var reader = dt.CreateDataReader())
{
for (var i = 0; i < reader.FieldCount; i++)
{
csv.WriteField(reader.GetName(i));
}
csv.NextRecord();
while (reader.Read())
{
csv.WriteField(reader.GetFieldValue<int>("Id"));
csv.WriteField(reader.GetFieldValue<string>("Name"));
csv.NextRecord();
}
}
writer.ToString().Dump();
}
}
Wenn es bessere Möglichkeiten gibt, lass es mich wissen. Mit Datentabellen kenne ich mich nicht so gut aus.
Ich schlage vor, diese Methode zur Bibliothek hinzuzufügen, weil sie wirklich nützlich ist.
Hilfreichster Kommentar
@johnyesberg Ups , danke. Ich muss das der Dokumentation hinzufügen.
Sie könnten die Zeilen und Spalten so durchgehen.
Oder Sie könnten ein
DataReader
und es so.Wenn es bessere Möglichkeiten gibt, lass es mich wissen. Mit Datentabellen kenne ich mich nicht so gut aus.