Arbeiten mit CSV in C# (.NET): vom einfachen Parsing bis zur fortgeschrittenen Bibliothek
CSV (Comma-Separated Values) ist eines der am weitesten verbreiteten Formate für den Austausch von Tabellendaten. Im .NET-Ökosystem gibt es mehrere Ansätze für die Arbeit mit CSV: von integrierten Mitteln bis hin zu spezialisierten Bibliotheken. In diesem Artikel werden wir alle grundlegenden Methoden durchgehen, Codebeispiele zeigen und Ihnen helfen, das optimale Werkzeug für Ihr Projekt auszuwählen.
1. Integrierte .NET-Mittel (manuelles Parsing)
Der einfachste Weg ist die Verwendung der Klassen StreamReader und String.Split. Diese Methode berücksichtigt jedoch nicht das Escapen von Anführungszeichen und Kommas innerhalb von Feldern und eignet sich daher nur für einfache CSV-Dateien ohne komplexe Daten.
using System;using System.IO;using System.Linq;
public class SimpleCsvReader{ public static void ReadCsv(string filePath) { using (var reader = new StreamReader(filePath)) { while (!reader.EndOfStream) { var line = reader.ReadLine(); var values = line.Split(','); // Zeilenverarbeitung Console.WriteLine(string.Join(" | ", values)); } } }}Nachteile: Verarbeitet keine Anführungszeichen, unterstützt keine mehrzeiligen Felder, keine Typisierung.
2. Verwendung von TextFieldParser (Microsoft.VisualBasic)
Die Klasse TextFieldParser aus dem Namespace Microsoft.VisualBasic.FileIO kann CSV mit Anführungszeichen und Trennzeichen korrekt verarbeiten. Fügen Sie zur Verwendung einen Verweis auf die Assembly Microsoft.VisualBasic hinzu.
using Microsoft.VisualBasic.FileIO;using System;
public class TextFieldParserExample{ public static void ParseCsv(string filePath) { using (var parser = new TextFieldParser(filePath)) { parser.TextFieldType = FieldType.Delimited; parser.SetDelimiters(","); parser.HasFieldsEnclosedInQuotes = true;
while (!parser.EndOfData) { string[] fields = parser.ReadFields(); Console.WriteLine(string.Join(" | ", fields)); } } }}Diese Methode ist bereits besser, erfordert aber dennoch ein manuelles Mapping der Felder auf Objekte.
3. Die Bibliothek CsvHelper – der Goldstandard
CsvHelper ist die beliebteste Bibliothek für die Arbeit mit CSV in .NET. Sie bietet vollständige Unterstützung des RFC 4180-Standards, automatisches Mapping auf Klassen, LINQ-Unterstützung und hohe Leistung.
Installation
dotnet add package CsvHelperBeispiel zum Lesen von CSV in eine Objektliste
using CsvHelper;using CsvHelper.Configuration;using System.Globalization;using System.IO;using System.Linq;
public class Person{ public int Id { get; set; } public string Name { get; set; } public string Email { get; set; } public DateTime BirthDate { get; set; }}
public class CsvHelperReader{ public static List<Person> ReadPeople(string filePath) { using (var reader = new StreamReader(filePath)) using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture)) { return csv.GetRecords<Person>().ToList(); } }}Beispiel zum Schreiben von CSV aus einer Sammlung
public static void WritePeople(string filePath, List<Person> people){ using (var writer = new StreamWriter(filePath)) using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) { csv.WriteRecords(people); }}Erweiterte Konfiguration
var config = new CsvConfiguration(CultureInfo.InvariantCulture){ HasHeaderRec Auch in der Bibliothek
Kryptografie in Rust mit der RustCrypto-Bibliothek
Psr/Log PHP: Vollständige Anleitung mit Beispielen
Boost für C++: Vollständiger Leitfaden mit Beispielen