Arbeiten mit CSV in C# (.NET): Vollständige Anleitung
CSV (Comma-Separated Values) ist eines der am weitesten verbreiteten Formate für den Austausch von Tabellendaten. Im C# (.NET)-Ökosystem gibt es mehrere Ansätze für die Arbeit mit CSV-Dateien: vom manuellen Parsing bis zur Verwendung leistungsstarker Drittanbieter-Bibliotheken. In diesem Artikel behandeln wir alle grundlegenden Methoden zum Lesen, Schreiben und Verarbeiten von CSV-Daten in .NET.
1. Manuelles CSV-Parsing mit StreamReader
Der einfachste Weg ist die Verwendung der Standardklassen StreamReader und String.Split. Diese Methode berücksichtigt jedoch keine komplexen Fälle (Anführungszeichen, Kommas innerhalb von Daten, Zeilenumbrüche).
using System;using System.IO;using System.Linq;
public class CsvSimpleReader{ public void ReadCsv(string filePath) { using (var reader = new StreamReader(filePath)) { while (!reader.EndOfStream) { var line = reader.ReadLine(); var values = line.Split(','); Console.WriteLine(string.Join(" | ", values)); } } }}Nachteile: Behandelt keine maskierten Kommas und Anführungszeichen. Verwenden Sie für reale Projekte zuverlässigere Methoden.
2. Verwendung von Microsoft.VisualBasic.FileIO.TextFieldParser (für .NET Framework)
Im .NET Framework gibt es einen integrierten CSV-Parser – TextFieldParser. Er verarbeitet Anführungszeichen und Trennzeichen korrekt.
using Microsoft.VisualBasic.FileIO;using System;using System.IO;
public class CsvTextFieldParser{ public void ParseCsv(string filePath) { using (var parser = new TextFieldParser(filePath)) { parser.TextFieldType = FieldType.Delimited; parser.SetDelimiters(",");
while (!parser.EndOfData) { string[] fields = parser.ReadFields(); Console.WriteLine(string.Join(" | ", fields)); } } }}Wichtig: In .NET Core / .NET 5+ ist diese Klasse über das Paket Microsoft.VisualBasic (NuGet) verfügbar.
3. Die Bibliothek CsvHelper (empfohlene Methode)
CsvHelper ist die beliebteste Bibliothek für die Arbeit mit CSV in .NET. Sie unterstützt Mapping auf Klassen, LINQ-Abfragen, Konfiguration von Trennzeichen und Kodierungen.
Installation über NuGet:
Install-Package CsvHelper3.1 CSV in eine Liste von Objekten lesen
using System.Globalization;using CsvHelper;using CsvHelper.Configuration;using System.IO;using System.Linq;using System.Collections.Generic;
public class Person{ public string Name { get; set; } public int Age { get; set; } public string Email { get; set; }}
public void ReadCsvWithCsvHelper(string filePath){ var config = new CsvConfiguration(CultureInfo.InvariantCulture) { HasHeaderRecord = true, Delimiter = ",", MissingFieldFound = null };
using (var reader = new StreamReader(filePath)) using (var csv = new CsvReader(reader, config)) { var records = csv.GetRecords<Person>().ToList(); foreach (var person in records) { Console.WriteLine($"{person.Name}, {person.Age}, {person.Email}"); } }}3.2 CSV aus einer Sammlung von Objekten schreiben
public void WriteCsvWithCsvHelper(string filePath, List<Person> people){ using (var writer = new StreamWriter(filePath)) using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) { csv.WriteRecords(people); }}3.3 Manuelle Feldverwaltung (ohne Mapping)
public void ManualCsvWrite(string filePath){ using (var writer = new StreamWriter(filePath)) using (va Auch in der Bibliothek
Standard-Java-Bibliothek: vollständiger Überblick und Codebeispiele
WireMock.Net für C# (.NET): Vollständiges Tutorial & Anleitung
JSON-Verarbeitung in PHP: Funktionen, Beispiele und Best Practices
GraphQL für Swift: Apollo iOS — Client für iOS und macOS
Swagger/OpenAPI-Generierung für Java: Bibliotheken und Werkzeuge