Passer au contenu du pied de page
UTILISATION D'IRONXL

Lire CSV .NET : L'approche C# la plus simple à l'aide d'IronXL

Lire CSV .NET : L'approche C# la plus simple à l'aide d'IronXL

La lecture et l'écriture de fichiers CSV dans les applications .NET deviennent remarquablement simples avec la bonne bibliothèque. Au lieu d'écrire une logique d'analyse personnalisée pour gérer les délimiteurs, les champs cotés et les différents types de données, les développeurs peuvent charger des données CSV avec un seul appel de méthode et y accéder immédiatement en tant que données structurées d'une feuille de calcul dans un format de tableau.

IronXL transforme le traitement CSV en traitant les fichiers séparés par des virgules comme des classeurs Excel. Cette bibliothèque .NET élimine la complexité de l'analyse manuelle des chaînes de caractères tout en offrant des fonctionnalités puissantes telles que la conversion en tableau de données, l'accès au niveau des cellules et la sortie transparente au format Excel. La bibliothèque fonctionne sur .NET Framework, .NET Core et .NET 5+ sans nécessiter l'installation de Microsoft Office, ce qui la rend idéale pour les projets ASP.NET Core et .NET Core Web API.

Ce guide présente des techniques pratiques pour lire les fichiers CSV, gérer les délimiteurs personnalisés, convertir les enregistrements en tableaux de données et écrire des fichiers CSV aux formats Excel, le tout avec un minimum de code. Chaque exemple de code comprend des explications détaillées pour vous aider à comprendre le fonctionnement du système.

Introduction au travail avec des fichiers CSV

Les fichiers CSV (Comma Separated Values) sont un élément essentiel de l'échange et du stockage de données, grâce à leur simplicité et à leur large compatibilité. Qu'il s'agisse d'importer des données dans une base de données, d'exporter des rapports ou d'intégrer des systèmes tiers, les fichiers CSV constituent un format léger et flexible pour traiter des données tabulaires. En .NET, l'utilisation de fichiers CSV est une tâche courante : les développeurs doivent souvent analyser, lire et écrire des données CSV dans le cadre d'une logique métier, de rapports ou de flux de migration de données.

Le système .NET offre plusieurs façons de traiter les fichiers CSV, depuis les opérations de base sur les chaînes et les fichiers jusqu'aux bibliothèques robustes comme CsvHelper. Une analyse correcte est essentielle, car même une simple virgule peut introduire de la complexité lorsqu'elle apparaît à l'intérieur de champs cités ou en tant que partie des données elles-mêmes. En exploitant les bons outils .NET et en comprenant les nuances de l'analyse CSV, les développeurs peuvent garantir l'intégrité des données et rationaliser le traitement des données dans leurs applications.

Quel est le moyen le plus simple de lire des fichiers CSV dans .NET?

L'approche la plus simple utilise la méthode WorkBook.LoadCSV pour importer des données CSV directement dans une structure de classeur. Cette méthode unique gère automatiquement l'analyse syntaxique, la détection des délimiteurs et l'organisation des données, sans qu'il soit nécessaire de créer un nouveau StreamReader ou de traiter manuellement chaque ligne de chaîne.

Installez IronXL via la console NuGet Package Manager dans Visual Studio. Ouvrez votre projet .NET et exécutez-le :

Install-Package IronXL.Excel

Read CSV .NET : L'approche C# la plus simple à l'aide d'IronXL : Image 1 - Installation

using IronXL;
using System;

class Program
{
    static void Main(string[] args)
    {
        // Load CSV file into a workbook with one method call
        WorkBook workbook = WorkBook.LoadCSV("sales_data.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ",");
        // Access the default worksheet containing CSV data
        WorkSheet sheet = workbook.DefaultWorkSheet;
        // Display all rows and CSV columns
        foreach (var row in sheet.Rows)
        {
            foreach (var cell in row)
            {
                Console.Write(cell.Value + "\t");
            }
            Console.WriteLine();
        }
    }
}
using IronXL;
using System;

class Program
{
    static void Main(string[] args)
    {
        // Load CSV file into a workbook with one method call
        WorkBook workbook = WorkBook.LoadCSV("sales_data.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ",");
        // Access the default worksheet containing CSV data
        WorkSheet sheet = workbook.DefaultWorkSheet;
        // Display all rows and CSV columns
        foreach (var row in sheet.Rows)
        {
            foreach (var cell in row)
            {
                Console.Write(cell.Value + "\t");
            }
            Console.WriteLine();
        }
    }
}
$vbLabelText   $csharpLabel

Entrée

Read CSV .NET : L'approche C# la plus simple à l'aide d'IronXL : Image 2 - Exemple d'entrée CSV

Sortie

Read CSV .NET : L'approche C# la plus simple à l'aide d'IronXL : Image 3 - Sortie console

Vous pouvez également lire un fichier CSV à l'aide de la bibliothèque CsvHelper, qui est populaire pour gérer les opérations CSV dans .NET. Pour lire un fichier CSV à l'aide de CsvHelper, créez un StreamReader puis une nouvelle instance CsvReader, souvent assignée à une variable comme var csv ou var reader :

using (var reader = new StreamReader("sales_data.csv"))
using (var csv = new CsvHelper.CsvReader(reader, System.Globalization.CultureInfo.InvariantCulture))
{
    var records = csv.GetRecords<dynamic>().ToList();
    // Process records as needed
}
using (var reader = new StreamReader("sales_data.csv"))
using (var csv = new CsvHelper.CsvReader(reader, System.Globalization.CultureInfo.InvariantCulture))
{
    var records = csv.GetRecords<dynamic>().ToList();
    // Process records as needed
}
$vbLabelText   $csharpLabel

Vous pouvez également écrire dans un fichier CSV à l'aide de CsvHelper en créant une instance StreamWriter et CsvWriter.

La méthode LoadCSV accepte trois paramètres : le chemin d'accès au fichier, le format Excel cible pour la représentation interne et le caractère de délimitation séparant les valeurs. Une fois chargé, le contenu CSV devient accessible via la propriété DefaultWorkSheet, qui fournit la feuille de calcul principale contenant tous les enregistrements importés.

La structure de boucle imbriquée parcourt chaque Row de la feuille de calcul, puis chaque Cell de cette ligne. La propriété Value renvoie le contenu de la cellule sous forme d'objet, tandis que le caractère de tabulation crée une séparation lisible des colonnes dans la sortie de la console. Ce modèle fonctionne de manière identique, que le fichier source contienne 10 lignes ou qu'il traite de gros fichiers CSV contenant des milliers d'enregistrements en mémoire.

Comment l'analyse CSV manuelle se compare-t-elle à l'utilisation d'une bibliothèque ? Comprendre la complexité qu'élimine IronXL permet d'en apprécier la valeur. L'analyse CSV manuelle nécessite de traiter de nombreux cas de figure qui semblent simples mais qui deviennent rapidement problématiques dans n'importe quel projet. ```cs using System; using System.IO; class Program { static void Main(string[] args) { // Manual approach - requires extensive code for basic functionality string path = "data.csv"; string[] lines = File.ReadAllLines(path); foreach (string line in lines) { // This breaks when CSV fields contain commas inside quotes string[] fields = line.Split(','); foreach (string field in fields) { Console.Write(field.Trim() + "\t"); } Console.WriteLine(); } } } ``` ### Entrée [Read CSV .NET : L'approche C# la plus simple à l'aide d'IronXL : Image 4 - Entrée CSV](/static-assets/excel/blog/read-csv-net/read-csv-net-4.webp) ### Sortie [Read CSV .NET : L'approche C# la plus simple à l'aide d'IronXL : Image 5 - Sortie d'analyse CSV manuelle](/static-assets/excel/blog/read-csv-net/read-csv-net-5.webp) L'approche manuelle échoue lorsque les champs CSV contiennent des virgules intégrées dans des chaînes de caractères entre guillemets - un scénario courant dans les champs d'adresse ou les descriptions. Pour lire et écrire correctement des fichiers CSV, il faut gérer les champs entre guillemets, les guillemets échappés, les valeurs multilignes et les différents encodages. L'utilisation de la bibliothèque CsvHelper ou de packages CSV Helper similaires ajoute des dépendances, tandis que le déploiement de votre propre analyseur signifie la création d'un nouveau `StreamReader`, la mise en œuvre d'un modèle de lecteur `var` et la gestion de l'ensemble du processus de lecture du fichier par vous-même. ```cs using IronXL; using System; class Program { static void Main(string[] args) { // IronXL approach - handles all edge cases automatically WorkBook workbook = WorkBook.LoadCSV("data.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ","); var records = workbook.DefaultWorkSheet.Rows; foreach (var row in records) { foreach (var cell in row) { Console.Write(cell.Value + "\t"); } Console.WriteLine(); } } } ``` La version IronXL accomplit la même tâche tout en gérant correctement les champs CSV cités, les caractères spéciaux et les variations d'encodage. La classe `WorkBook` gère la complexité de l'analyse en interne, ce qui permet aux développeurs de se concentrer sur l'utilisation des données plutôt que sur leur extraction. Contrairement aux approches nécessitant une nouvelle instance de `CsvReader` ou une configuration de paquetage `CsvHelper`, IronXL ne nécessite aucune configuration supplémentaire - il suffit de charger et d'utiliser. ## Comment gérer les différents délimiteurs CSV? Les fichiers CSV n'utilisent pas toujours des virgules comme séparateurs. Les exportations de systèmes européens utilisent fréquemment des points-virgules en raison de l'utilisation de virgules dans les nombres décimaux, tandis que les valeurs séparées par des tabulations (TSV) et les fichiers délimités par des tuyaux apparaissent régulièrement dans les exportations de données provenant de diverses applications. ```cs using IronXL; using System; class Program { static void Main(string[] args) { // Reading a semicolon-delimited file (common in European exports) WorkBook euroData = WorkBook.LoadCSV("german_report.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ";"); // Reading a tab-separated file WorkBook tsvData = WorkBook.LoadCSV("exported_data.tsv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: "\t"); // Reading a pipe-delimited file WorkBook pipeData = WorkBook.LoadCSV("legacy_system.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: "|"); // Access data identically regardless of original delimiter WorkSheet sheet = euroData.DefaultWorkSheet; int rowsCount = sheet.RowCount; Console.WriteLine($"Loaded {rowsCount} rows with {sheet.ColumnCount} CSV columns"); } } ``` Le paramètre `listDelimiter` dans `LoadCSV` accepte n'importe quel caractère unique ou séquence d'échappement comme séparateur de champ. Les caractères de tabulation utilisent la séquence d'échappement `\t`. Après le chargement, la structure des données reste cohérente quel que soit le format d'origine, ce qui facilite le traitement des fichiers CSV provenant de sources multiples avec des délimiteurs différents. La valeur par défaut de la plupart des fichiers CSV est une virgule, mais cette flexibilité permet de gérer toute variation rencontrée par votre projet. ### Entrée [Read CSV .NET : L'approche C# la plus simple à l'aide d'IronXL : Image 6 - Entrée d'un fichier CSV délimité par des points-virgules](/static-assets/excel/blog/read-csv-net/read-csv-net-6.webp) ### Sortie [Read CSV .NET : L'approche C# la plus simple à l'aide d'IronXL : Image 7 - Sortie délimitée par des points-virgules](/static-assets/excel/blog/read-csv-net/read-csv-net-7.webp) Les propriétés de classe [`RowCount`](/csharp/excel/object-reference/api/IronXL.WorkSheet.html) et `ColumnCount` permettent de vérifier rapidement que le fichier s'est chargé correctement, ce qui s'avère particulièrement utile lorsqu'on travaille avec des sources de données peu familières ou qu'on valide les téléchargements des utilisateurs dans une application ASP.NET Core. ## Quelles sont les meilleures méthodes pour convertir CSV en DataTable? La conversion de données CSV en `DataTable` permet l'intégration avec des opérations de base de données, la liaison de données dans les applications d'interface utilisateur et les requêtes LINQ. La méthode `ToDataTable` effectue cette conversion en un seul appel. ```cs using IronXL; using System; using System.Data; class Program { static void Main(string[] args) { // Load CSV and convert to DataTable WorkBook workbook = WorkBook.LoadCSV("customers.csv", ExcelFileFormat.XLSX, ","); WorkSheet sheet = workbook.DefaultWorkSheet; // Convert worksheet to DataTable - true parameter uses CSV file header as column names DataTable dataTable = sheet.ToDataTable(true); // DataTable is now ready for database operations, binding, or LINQ queries Console.WriteLine($"DataTable created with {dataTable.Columns.Count} columns:"); foreach (DataColumn column in dataTable.Columns) { // Property names from CSV header become column names Console.WriteLine($" - {column.ColumnName}"); } Console.WriteLine($"\nTotal records: {dataTable.Rows.Count}"); // Access data using standard DataTable syntax foreach (DataRow row in dataTable.Rows) { // Access by column index or name attribute string name = row["Name"].ToString(); string email = row["Email"].ToString(); Console.WriteLine($"Customer: {name}, Email: {email}"); } } } ``` Le paramètre booléen dans `ToDataTable` détermine si la première ligne doit devenir des en-têtes de colonnes (`true`) ou des données (`false`). Lorsque la valeur est `true`, les colonnes de la `DataTable` résultante portent les noms de propriété de la ligne d'en-tête du fichier CSV, ce qui permet un accès intuitif aux données à l'aide de noms de colonnes tels que `row["Name"]`. Cette conversion s'avère précieuse pour les scénarios nécessitant des insertions en masse dans les bases de données à l'aide de `SqlBulkCopy`, le remplissage des contrôles `DataGridView` dans les applications Windows Forms, ou l'exécution de transformations de données complexes à l'aide d'expressions LINQ. Le format `DataTable` s'intègre également naturellement à Entity Framework et à d'autres outils ORM dans votre projet .NET Core Web API.

Les fichiers CSV peuvent-ils être convertis au format Excel ? L'une des capacités remarquables d'IronXL est la conversion de données CSV en formats Excel appropriés. Cela permet d'ajouter des formules, du formatage, des graphiques et plusieurs feuilles de calcul à des données CSV initialement plates, ce qu'il est impossible de faire en écrivant uniquement des fichiers CSV. ```cs using IronXL; using System; class Program { static void Main(string[] args) { // Load CSV data from file path string path = "quarterly_sales.csv"; WorkBook workbook = WorkBook.LoadCSV(path, ExcelFileFormat.XLSX, ","); // Save as Excel XLSX format - create new Excel file workbook.SaveAs("quarterly_sales.xlsx"); // Alternative: Save as legacy XLS format for older Excel versions workbook.SaveAs("quarterly_sales.xls"); Console.WriteLine("CSV successfully converted to Excel format"); } } ``` La méthode `SaveAs` détermine automatiquement le format de sortie en fonction de l'extension du fichier. `XLSX` crée des fichiers Office Open XML modernes compatibles avec Excel 2007 et les versions ultérieures, tandis que `XLS` produit des documents au format Binary Interchange File Format pour les applications plus anciennes. ### Entrée [Read CSV .NET : L'approche C# la plus simple à l'aide d'IronXL : Image 8 - Données CSV](/static-assets/excel/blog/read-csv-net/read-csv-net-8.webp) ### Sortie [Read CSV .NET : L'approche C# la plus simple à l'aide d'IronXL : Image 9 - Sortie Excel](/static-assets/excel/blog/read-csv-net/read-csv-net-9.webp) [Read CSV .NET : L'approche C# la plus simple à l'aide d'IronXL : Image 10 - Sortie CSV vers Excel](/static-assets/excel/blog/read-csv-net/read-csv-net-10.webp) Ce flux de travail s'avère particulièrement utile lorsque des exportations CSV provenant de bases de données ou d'API doivent être améliorées avant d'être distribuées à un utilisateur. Après la conversion, le fichier Excel peut recevoir un formatage supplémentaire, des formules ou être combiné avec d'autres feuilles de calcul - le tout de manière programmatique grâce aux [comprehensive editing capabilities](/csharp/excel/how-to/csharp-edit-excel-file/) d'IronXL. Contrairement aux approches utilisant un `var` writer avec une nouvelle instance `StreamWriter` pour écrire des fichiers CSV, IronXL gère l'ensemble de la conversion des fichiers de manière transparente. ## Comment accéder à des valeurs de cellules spécifiques dans des données CSV? Au-delà de l'itération à travers tous les enregistrements, IronXL fournit un accès direct aux cellules en utilisant un adressage familier de type Excel. Cela permet l'extraction de données ciblées et la récupération de valeurs en toute sécurité à travers différents types de données. ```cs using IronXL; using System; // Example class to demonstrate structured data access public class Employee { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } class Program { static void Main(string[] args) { WorkBook workbook = WorkBook.LoadCSV("inventory.csv", ExcelFileFormat.XLSX, ","); WorkSheet sheet = workbook.DefaultWorkSheet; // Access specific cells using Excel-style addresses by index string productName = sheet["A2"].StringValue; int quantity = sheet["B2"].IntValue; decimal price = sheet["C2"].DecimalValue; Console.WriteLine($"Product: {productName}"); Console.WriteLine($"Quantity: {quantity}"); Console.WriteLine($"Price: ${price:F2}"); // Access a range of cells - return records from column A var productRange = sheet["A2:A10"]; Console.WriteLine("\nAll products:"); foreach (var cell in productRange) { Console.WriteLine($" - {cell.StringValue}"); } } } ``` L'adressage des cellules suit les conventions Excel où les lettres représentent les colonnes du CSV (A, B, C) et les chiffres représentent les positions d'index de ligne (1, 2, 3). La classe [Cell](/csharp/excel/object-reference/api/IronXL.Cell.html) fournit des accesseurs spécifiques au type, notamment `StringValue`, `IntValue`, `DecimalValue`, `BoolValue` et `DateTimeValue`. Ces accesseurs gèrent l'analyse syntaxique et la conversion automatiquement, ce qui élimine le moulage manuel des types et réduit la surcharge de mémoire par rapport au stockage de toutes les valeurs sous forme de chaînes. La sélection d'une plage à l'aide d'une notation telle que `A2:A10` renvoie un objet [Range](/csharp/excel/object-reference/api/IronXL.Range.html) qui prend en charge l'itération, les fonctions d'agrégation et les opérations en bloc. Cela s'avère très utile pour extraire des colonnes spécifiques ou des régions de données rectangulaires à partir de fichiers CSV volumineux. Par exemple, vous pouvez créer une nouvelle liste de valeurs à partir d'une colonne spécifique ou écrire des données filtrées dans un autre fichier. ## Gestion des erreurs dans les opérations sur les fichiers CSV Une gestion robuste des erreurs est essentielle lorsque l'on travaille avec des fichiers CSV dans des applications .NET. La lecture et l'écriture de fichiers CSV peuvent entraîner divers problèmes, tels que des fichiers manquants, des données mal formées ou des erreurs d'analyse inattendues. Pour gérer ces scénarios, la meilleure pratique consiste à envelopper les opérations sur les fichiers et les données dans des blocs try-catch, ce qui permet à votre application de gérer les exceptions de manière gracieuse et de fournir un retour d'information significatif. ## Conclusion La lecture de fichiers CSV dans .NET nécessite un effort minimal lorsque l'on utilise la bonne approche. La méthode `LoadCSV` d'IronXL gère automatiquement la complexité de l'analyse, en prenant en charge divers délimiteurs et en offrant un accès immédiat aux données structurées grâce à des concepts de tableur familiers. Que vous construisiez une application ASP.NET Core, une API Web .NET Core ou un projet de console, cette bibliothèque rationalise le traitement CSV. [Démarrez un essai gratuit](trial-license) pour découvrir comment IronXL simplifie la lecture des fichiers CSV dans vos projets .NET. Pour un déploiement en production, [les options de licence](/csharp/excel/licensing/) commencent à $799 avec des droits d'utilisation perpétuels et un an d'assistance inclus.

Questions Fréquemment Posées

Quel est le moyen le plus simple de lire des fichiers CSV en C# ?

La façon la plus simple de lire des fichiers CSV en C# est d'utiliser IronXL, qui fournit une méthode directe et efficace pour traiter les données CSV.

IronXL peut-il gérer efficacement de grands fichiers CSV ?

Oui, IronXL est conçu pour traiter efficacement les fichiers CSV volumineux, ce qui le rend adapté au traitement d'ensembles de données étendus sans problème de performance.

IronXL for .NET est-il compatible avec les applications .NET ?

IronXL for .NET est entièrement compatible avec les applications .NET, ce qui permet aux développeurs d'intégrer facilement des fonctionnalités de lecture CSV dans leurs projets C#.

IronXL prend-il en charge la lecture de fichiers CSV avec différents délimiteurs ?

IronXL prend en charge la lecture des fichiers CSV avec divers délimiteurs, ce qui offre une certaine flexibilité pour traiter des fichiers de formats différents.

IronXL peut-il analyser des fichiers CSV avec des en-têtes ?

Oui, IronXL peut analyser des fichiers CSV avec des en-têtes, ce qui vous permet d'accéder facilement aux données par nom de colonne.

Comment IronXL simplifie-t-il la manipulation des données CSV ?

IronXL simplifie la manipulation des données CSV en offrant des méthodes intuitives pour lire, modifier et écrire des données CSV directement dans C#.

Existe-t-il une prise en charge de la lecture asynchrone de fichiers CSV dans IronXL ?

IronXL offre une prise en charge des opérations asynchrones, ce qui vous permet de lire des fichiers CSV sans bloquer le fil d'exécution principal de l'application.

IronXL peut-il convertir des données CSV en format Excel ?

IronXL peut convertir des données CSV au format Excel, ce qui vous permet d'exploiter les fonctionnalités avancées d'Excel pour l'analyse et la présentation des données.

IronXL a-t-il des dépendances pour la lecture des fichiers CSV ?

IronXL est une bibliothèque autonome qui ne nécessite aucune dépendance externe pour lire les fichiers CSV, ce qui simplifie le processus de configuration dans vos projets.

IronXL peut-il être utilisé pour exporter des données du format CSV vers d'autres formats ?

Oui, IronXL peut exporter des données du format CSV vers différents formats, notamment Excel, ce qui offre une grande polyvalence en matière de traitement des données et de création de rapports.

Jordi Bardia
Ingénieur logiciel
Jordi est le plus compétent en Python, C# et C++, et lorsqu'il ne met pas à profit ses compétences chez Iron Software, il programme des jeux. Partageant les responsabilités des tests de produit, du développement de produit et de la recherche, Jordi apporte une immense valeur à l'amé...
Lire la suite