CsvHelper pour C# (.NET) : guide complet avec exemples
1. Qu'est-ce que CsvHelper et pourquoi l'utiliser ?
La bibliothèque CsvHelper est un outil puissant et flexible pour lire et écrire des fichiers CSV dans l'écosystème .NET. Elle offre aux développeurs une API de haut niveau qui abstrait la complexité du format CSV, permettant de se concentrer sur la logique métier de l'application. Contrairement aux méthodes primitives comme String.Split(','), CsvHelper gère correctement les caractères échappés, les guillemets, les champs multilignes et les paramètres culturels variés (séparateurs, formats de dates et de nombres).
Pourquoi l'utiliser ? Dans le développement moderne, le CSV reste l'un des formats les plus courants pour l'échange de données : exportation de rapports, importation depuis Excel, chargement de configurations, échange avec des systèmes hérités et migration de données. CsvHelper transforme la tâche fastidieuse du parsing en code propre et déclaratif, en utilisant le mapping de classes (attributs ou Fluent API), la conversion automatique de types et la validation intégrée. Cela permet d'économiser des heures de développement et de réduire les erreurs liées à l'analyse manuelle des lignes.
Fonctionnalités clés : prise en charge de .NET Standard 2.0+ (fonctionne partout : .NET Framework, .NET Core, .NET 5+), traitement par flux (ne charge pas tout le fichier en mémoire), convertisseurs de types personnalisés, détection des séparateurs, gestion des en-têtes et des index, ainsi que la prise en charge complète des opérations asynchrones (ReadAsync/WriteAsync).
2. Installation
L'installation se fait via le gestionnaire de paquets NuGet. Exécutez l'une des commandes suivantes dans la console du gestionnaire de paquets ou dans le terminal .NET CLI :
dotnet add package CsvHelper
ou via la console du gestionnaire de paquets :
Install-Package CsvHelper
Pour la version 31.0.2 (actuelle au moment de la rédaction), .NET Standard 2.0 ou supérieur est requis. Après l'installation, ajoutez les directives using dans votre code :
using CsvHelper;
using CsvHelper.Configuration;
using System.Globalization;
3. Démarrage rapide — exemple minimal fonctionnel
Créons un modèle simple, puis écrivons et lisons un fichier CSV.
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; }
}
// Écriture
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);
}
// Lecture
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}");
}
Cet exemple illustre le cycle de base : création d'un objet CsvWriter ou CsvReader, transmission du flux et de la culture, appel de la méthode d'écriture/lecture. Notez l'utilisation de CultureInfo.InvariantCulture — cela garantit que les séparateurs décimaux et les dates sont écrits dans un format uniforme (point pour les nombres, ISO pour les dates).
4. Méthodes/fonctions/classes principales
Examinons les classes et méthodes clés de la bibliothèque. Chaque méthode est accompagnée de sa signature, d'une description et d'un exemple fonctionnel.
4.1. CsvReader.GetRecords<T>()
Signature : public IEnumerable<T
Aussi dans la bibliothèque
Générateur de QR codes en TypeScript : qrcode.js et qrcode-generator
gRPC pour C++ : bibliothèques, exemples et guide d'utilisation
Framework CLI pour C# (.NET) : System.CommandLine et Spectre.Console
Apprentissage automatique en Go : aperçu des bibliothèques pour Golang