Heim >Backend-Entwicklung >C++ >Wie konvertiert man eine DataTable korrekt in eine CSV-Datei in C#?

Wie konvertiert man eine DataTable korrekt in eine CSV-Datei in C#?

Barbara Streisand
Barbara StreisandOriginal
2025-01-15 15:41:44455Durchsuche

How to Correctly Convert a DataTable to a CSV File in C#?

Effiziente Konvertierung von Datentabellen in CSV-Dateien in C#

Das Umwandeln einer DataTable in eine CSV-Datei ist ein häufiger Vorgang in der Datenverarbeitung. Eine unsachgemäße Handhabung kann jedoch zu Datenbeschädigungen führen, was häufig zu verketteten Werten in der ersten Zelle jeder Zeile führt. Dieser Leitfaden zeigt den richtigen Ansatz und vermeidet häufige Fallstricke.

Behebung häufiger Fehler:

Ein häufiger Fehler besteht darin, am Ende jeder Zeile zusätzliche Kommas einzufügen, was zu einer Fehlausrichtung der Daten führt. Dieses Beispiel vermeidet dieses Problem.

Optimale Implementierung:

Für .NET 4.0 und höher:

Dieses optimierte Code-Snippet konvertiert eine DataTable effizient in eine CSV-Datei:

<code class="language-csharp">StringBuilder sb = new StringBuilder();
sb.AppendLine(string.Join(",", dt.Columns.Cast<DataColumn>().Select(column => column.ColumnName)));

foreach (DataRow row in dt.Rows)
{
    IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
    sb.AppendLine(string.Join(",", fields));
}

File.WriteAllText("test.csv", sb.ToString());</code>

Umgang mit Sonderzeichen (z. B. Kommas in Feldern):

Um Datenbeschädigungen durch Sonderzeichen wie Kommas in Datenfeldern zu verhindern, verwenden Sie diese erweiterte Methode:

<code class="language-csharp">foreach (DataRow row in dt.Rows)
{
    IEnumerable<string> fields = row.ItemArray.Select(field =>
      string.Concat("\"", field.ToString().Replace("\"", "\"\""), "\""));
    sb.AppendLine(string.Join(",", fields));
}</code>

Dieser Code schließt jedes Feld in doppelte Anführungszeichen ein und maskiert alle vorhandenen doppelten Anführungszeichen innerhalb der Felder.

Verbesserte Speicherverwaltung: Zeile für Zeile schreiben:

Bei extrem großen Datentabellen verbessert das zeilenweise Schreiben der CSV die Speichereffizienz:

<code class="language-csharp">using (var writer = new StreamWriter("test.csv"))
{
    writer.WriteLine(string.Join(",", dt.Columns.Cast<DataColumn>().Select(column => column.ColumnName)));
    foreach (DataRow row in dt.Rows)
    {
        writer.WriteLine(string.Join(",", row.ItemArray.Select(field => string.Concat("\"", field.ToString().Replace("\"", "\"\""), "\""))));
    }
}</code>

Dieser Ansatz vermeidet das gleichzeitige Laden der gesamten CSV-Datei in den Speicher und eignet sich daher für die Verarbeitung großer Datenmengen. Denken Sie daran, die erforderlichen using-Anweisungen für System.Data, System.IO, System.Linq und System.Text einzufügen.

Das obige ist der detaillierte Inhalt vonWie konvertiert man eine DataTable korrekt in eine CSV-Datei in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn