CsvHelper für C# (.NET): Komplettguide mit Beispielen
1. Was ist CsvHelper und warum braucht man es?
Die Bibliothek CsvHelper ist ein leistungsstarkes und flexibles Werkzeug zum Lesen und Schreiben von CSV-Dateien im .NET-Ökosystem. Sie bietet Entwicklern eine hochwertige API, die die Komplexität der Arbeit mit dem CSV-Format abstrahiert, sodass Sie sich auf die Geschäftslogik Ihrer Anwendung konzentrieren können. Im Gegensatz zu primitiven Methoden wie String.Split(',') verarbeitet CsvHelper korrekt escaped Zeichen, Anführungszeichen, mehrzeilige Felder und verschiedene kulturelle Einstellungen (Trennzeichen, Datums- und Zahlenformate).
Warum ist es notwendig? In der modernen Entwicklung ist CSV immer noch eines der am weitesten verbreiteten Formate für den Datenaustausch: Berichtsexporte, Importe aus Excel, Konfigurationsladungen, Austausch mit Altsystemen und Datenmigrationen. CsvHelper verwandelt die mühsame Aufgabe des Parsings in sauberen, deklarativen Code, indem es Klassen-Mapping (Attribute oder Fluent API), automatische Typkonvertierung und integrierte Validierung verwendet. Das spart Stunden an Entwicklungszeit und reduziert Fehler, die durch manuelles Zeilenparsen entstehen.
Wichtige Funktionen: Unterstützung für .NET Standard 2.0+ (funktioniert überall: .NET Framework, .NET Core, .NET 5+), Streaming-Verarbeitung (lädt nicht die gesamte Datei in den Speicher), benutzerdefinierte Typkonverter, Trennzeichenerkennung, Arbeit mit Kopfzeilen und Indizes sowie vollständige Unterstützung für asynchrone Operationen (ReadAsync/WriteAsync).
2. Installation
Die Installation erfolgt über den NuGet-Paketmanager. Führen Sie einen der folgenden Befehle in der Paketmanager-Konsole oder im .NET CLI-Terminal aus:
dotnet add package CsvHelper
oder über die Package Manager Console:
Install-Package CsvHelper
Für Version 31.0.2 (aktuell zum Zeitpunkt der Erstellung) wird .NET Standard 2.0 oder höher benötigt. Fügen Sie nach der Installation die using-Direktiven in Ihren Code ein:
using CsvHelper;
using CsvHelper.Configuration;
using System.Globalization;
3. Schnellstart – Minimales Arbeitsbeispiel
Erstellen wir ein einfaches Modell und schreiben/lesen eine CSV-Datei.
using System.Globalization;
using CsvHelper;
using CsvHelper.Configuration;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Email { get; set; }
}
// Schreiben
var people = new List<Person>
{
new Person { Name = "Anna", Age = 30, Email = "anna@example.com" },
new Person { Name = "Boris", Age = 25, Email = "boris@example.com" }
};
using (var writer = new StreamWriter("people.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
csv.WriteRecords(people);
}
// Lesen
using (var reader = new StreamReader("people.csv"))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
var records = csv.GetRecords<Person>().ToList();
foreach (var p in records)
Console.WriteLine($"{p.Name}, {p.Age}, {p.Email}");
}
Dieses Beispiel zeigt den grundlegenden Ablauf: Erstellen eines CsvWriter- oder CsvReader-Objekts, Übergeben eines Streams und der Kultur, Aufrufen der Schreib-/Lesemethode. Beachten Sie CultureInfo.InvariantCulture – dies stellt sicher, dass Dezimaltrennzeichen und Daten in einem einheitlichen Format geschrieben werden (Punkt für Zahlen, ISO für Daten).
4. Wichtige Methoden/Funktionen/Klassen
Betrachten wir die wichtigsten Klassen und Methoden der Bibliothek. Jede Methode wird mit Signatur, Beschreibung und einem funktionierenden Beispiel vorgestellt.
4.1. CsvReader.GetRecords<T>()
Signatur: public IEnumerable<T