Arbeiten mit CSV in C# (.NET): Vollständige Anleitung

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

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 CsvHelper


3.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                    

Empfehlungen