Passer au contenu du pied de page
UTILISATION D'IRONXL

Comment convertir un fichier CSV en liste en C#

Dans ce tutoriel pour débutants, nous allons voir comment lire des fichiers CSV dans une liste en C# en utilisant la bibliothèque IronXL. Eh bien, c'est l'une des choses les plus basiques que vous devez savoir dans n'importe quel langage de programmation, car les fichiers CSV sont un moyen très courant de stocker des données et de les transférer d'un système ou d'une application à un autre. Nous couvrirons tout, de la configuration de votre projet à l'analyse efficace des fichiers CSV.

Comment convertir un fichier CSV en liste en C

  1. Créez un projet de console C# dans Visual Studio.
  2. Installez la bibliothèque CSV C# en utilisant le gestionnaire de packages NuGet.
  3. Chargez le fichier CSV en utilisant la méthode WorkBook.LoadCSV.
  4. Lisez les valeurs de données du fichier et remplissez la liste.
  5. Imprimez la liste sur la console.

Configuration de votre projet

Étape 1 : Créer un nouveau projet C

  1. Ouvrez Visual Studio : Démarrez Visual Studio sur votre ordinateur.
  2. Créez un nouveau projet : Cliquez sur "Créer un nouveau projet". Cela ouvre une fenêtre où vous pouvez sélectionner le type de projet.
  3. Sélectionnez le type de projet : Choisissez "Application console (.NET Core)" comme type de projet pour simplifier.
  4. Nommer votre projet : Nommez votre projet CSVFileReader.
  5. Choisissez un emplacement : Sélectionnez un emplacement approprié sur votre appareil pour enregistrer ce projet.
  6. Générez le projet : Cliquez sur "Créer" pour initialiser votre nouveau projet C#.

Étape 2 : Installer la bibliothèque IronXL

  1. Ouvrez le gestionnaire de packages NuGet : Dans Visual Studio, allez dans le menu "Outils", puis sélectionnez "Gestionnaire de packages NuGet" et choisissez "Gérer les packages NuGet pour la solution...".
  2. Recherchez IronXL : Cliquez sur l'onglet "Parcourir" et recherchez "IronXL.Excel".

Comment convertir un fichier CSV en liste en C#: Figure 1 - IronXL

  1. Installez IronXL : Trouvez le package IronXL dans les résultats de la recherche, sélectionnez-le et cliquez sur "Installer". Assurez-vous d'accepter les accords de licence et de vérifier les modifications.
  2. Vérifiez l'installation : Après l'installation, vous devriez voir IronXL référencé dans les références de votre projet.

Maintenant, votre projet CSVFileReader est configuré avec la bibliothèque IronXL, et vous êtes prêt à commencer à lire et traiter des fichiers CSV en C#. Cette configuration forme la base des tâches de lecture CSV que nous entreprendrons dans les sections suivantes de ce tutoriel.

Analyse et traitement des fichiers CSV en C

Avec le projet configuré et la bibliothèque IronXL installée, concentrons-nous sur l'analyse et le traitement des fichiers CSV. Nous travaillerons dans le fichier Program.cs, qui est généré automatiquement dans votre projet CSVFileReader.

Étape 1 : Spécification du chemin du fichier

Avant de pouvoir lire des données, nous devons savoir où se trouve notre fichier CSV. Définissez une variable dans la méthode Main pour stocker le chemin du fichier.

string filename = "csvfile.csv"; // Replace with your actual file path
string filename = "csvfile.csv"; // Replace with your actual file path
Dim filename As String = "csvfile.csv" ' Replace with your actual file path
$vbLabelText   $csharpLabel

Étape 2 : Chargement du fichier CSV

IronXL simplifie le chargement d'un fichier CSV. Utilisez la méthode WorkBook.LoadCSV pour lire le fichier CSV dans un objet WorkBook.

var csv = WorkBook.LoadCSV(filename);
var csv = WorkBook.LoadCSV(filename);
Dim csv = WorkBook.LoadCSV(filename)
$vbLabelText   $csharpLabel

Étape 3 : Définition d'une structure de données

Créez une classe qui représente la structure de données dans votre fichier CSV. Par exemple, si votre CSV contient des informations sur des personnes, définissez une classe Person comme ceci :

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
Public Class Person
	Public Property Name() As String
	Public Property Age() As Integer
End Class
$vbLabelText   $csharpLabel

Étape 4 : Analyse des données CSV

Dans cette étape, nous allons analyser le fichier CSV et remplir une List<Person> avec les données. Nous utilisons IronXL pour gérer la lecture des CSV, et l'essentiel est de traiter correctement chaque ligne ou ligne du CSV, en tenant compte des en-têtes et des éventuelles lignes vides. Voici une explication détaillée du code :

List<Person> people = new List<Person>();
bool isFirstRow = true; // Add a flag to check for the first row
foreach (var row in csv.WorkSheets[0].Rows)
{
    if (isFirstRow)
    {
        isFirstRow = false; // Set the flag to false after skipping the first row
        continue;
    }
    if (row.IsEmpty) continue; // Skip empty rows
    var cells = row.ToArray();
    var person = new Person()
    {
        Name = cells[0].StringValue,
        Age = int.Parse(cells[1].StringValue) // Ensure this is a numeric value
    };
    people.Add(person);
}
List<Person> people = new List<Person>();
bool isFirstRow = true; // Add a flag to check for the first row
foreach (var row in csv.WorkSheets[0].Rows)
{
    if (isFirstRow)
    {
        isFirstRow = false; // Set the flag to false after skipping the first row
        continue;
    }
    if (row.IsEmpty) continue; // Skip empty rows
    var cells = row.ToArray();
    var person = new Person()
    {
        Name = cells[0].StringValue,
        Age = int.Parse(cells[1].StringValue) // Ensure this is a numeric value
    };
    people.Add(person);
}
Dim people As New List(Of Person)()
Dim isFirstRow As Boolean = True ' Add a flag to check for the first row
For Each row In csv.WorkSheets(0).Rows
	If isFirstRow Then
		isFirstRow = False ' Set the flag to false after skipping the first row
		Continue For
	End If
	If row.IsEmpty Then
		Continue For ' Skip empty rows
	End If
	Dim cells = row.ToArray()
	Dim person As New Person() With {
		.Name = cells(0).StringValue,
		.Age = Integer.Parse(cells(1).StringValue)
	}
	people.Add(person)
Next row
$vbLabelText   $csharpLabel

Dans ce processus d'analyse, nous commençons par initialiser une List<Person> pour stocker les données analysées et utilisons un indicateur booléen isFirstRow pour ignorer la ligne d'en-tête du fichier CSV. La boucle foreach parcourt chaque ligne du fichier CSV. Lors de la première itération, la ligne d'en-tête est identifiée et ignorée, garantissant ainsi que seules les lignes de données sont traitées. Nous vérifions ensuite chaque ligne pour nous assurer qu'elle n'est pas vide en utilisant row.IsEmpty. Cette étape est cruciale pour éviter les erreurs d'analyse avec les lignes vides.

Pour chaque ligne de données, nous convertissons la ligne en un tableau de cellules (row.ToArray()) et créons ensuite un objet Person avec ces données. Il est crucial d'analyser et de convertir correctement les types de données, comme convertir la chaîne 'Age' en un entier. L'objet Person analysé est alors ajouté à notre liste people. Cette approche garantit que seules les lignes de données valides sont traitées et stockées, gérant efficacement les problèmes potentiels tels que les chaînes non numériques dans les colonnes numériques ou les lignes vides inattendues.

Étape 5 : Affichage des données

Après avoir analysé les données CSV dans notre List<Person>, l'étape importante suivante est d'afficher et de vérifier les données. Cela non seulement aide à s'assurer que notre analyse a réussi, mais nous permet également d'observer la sortie et d'effectuer un contrôle rapide de la qualité des données. Voici comment vous pouvez mettre cela en œuvre :

foreach (var person in people)
{
    Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
foreach (var person in people)
{
    Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
For Each person In people
	Console.WriteLine($"Name: {person.Name}, Age: {person.Age}")
Next person
$vbLabelText   $csharpLabel

Voici le code complet de Program.cs :

using IronXL;
using System;
using System.Collections.Generic;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main(string[] args)
{
    string filename = @"C:\Users\tayya\Downloads\sample_data.csv"; // Replace with your actual file path
    var csv = WorkBook.LoadCSV(filename);
    List<Person> people = new List<Person>();
    bool isFirstRow = true; // Add a flag to check for the first row
    foreach (var row in csv.WorkSheets[0].Rows)
    {
        if (isFirstRow)
        {
            isFirstRow = false; // Set the flag to false after skipping the first row
            continue;
        }
        if (row.IsEmpty) continue; // Skip empty rows
        var cells = row.ToArray();
        var person = new Person()
        {
            Name = cells[0].StringValue,
            Age = int.Parse(cells[1].StringValue) // Ensure this is a numeric value
        };
        people.Add(person);
    }
    foreach (var person in people)
    {
        Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
    }
}
using IronXL;
using System;
using System.Collections.Generic;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main(string[] args)
{
    string filename = @"C:\Users\tayya\Downloads\sample_data.csv"; // Replace with your actual file path
    var csv = WorkBook.LoadCSV(filename);
    List<Person> people = new List<Person>();
    bool isFirstRow = true; // Add a flag to check for the first row
    foreach (var row in csv.WorkSheets[0].Rows)
    {
        if (isFirstRow)
        {
            isFirstRow = false; // Set the flag to false after skipping the first row
            continue;
        }
        if (row.IsEmpty) continue; // Skip empty rows
        var cells = row.ToArray();
        var person = new Person()
        {
            Name = cells[0].StringValue,
            Age = int.Parse(cells[1].StringValue) // Ensure this is a numeric value
        };
        people.Add(person);
    }
    foreach (var person in people)
    {
        Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
    }
}
Imports IronXL
Imports System
Imports System.Collections.Generic

Public Class Person
	Public Property Name() As String
	Public Property Age() As Integer
End Class

Friend Class Program
	Shared Sub Main(ByVal args() As String)
	Dim filename As String = "C:\Users\tayya\Downloads\sample_data.csv" ' Replace with your actual file path
	Dim csv = WorkBook.LoadCSV(filename)
	Dim people As New List(Of Person)()
	Dim isFirstRow As Boolean = True ' Add a flag to check for the first row
	For Each row In csv.WorkSheets(0).Rows
		If isFirstRow Then
			isFirstRow = False ' Set the flag to false after skipping the first row
			Continue For
		End If
		If row.IsEmpty Then
			Continue For ' Skip empty rows
		End If
		Dim cells = row.ToArray()
		Dim person As New Person() With {
			.Name = cells(0).StringValue,
			.Age = Integer.Parse(cells(1).StringValue)
		}
		people.Add(person)
	Next row
	For Each person In people
		Console.WriteLine($"Name: {person.Name}, Age: {person.Age}")
	Next person
	End Sub
$vbLabelText   $csharpLabel

Sortie du code

Lorsque vous exécutez le fichier, il affichera les données de la liste dans la console :

Comment convertir un fichier CSV en liste en C#: Figure 2 - Résultat de la liste

Gestion des différents types de données

Lors de la gestion de divers types de données dans un fichier CSV, il est important d'adapter la logique d'analyse au type spécifique de chaque colonne de données. Dans l'exemple de la classe Person, tandis que le Name est une chaîne et peut être directement attribué en utilisant StringValue, les champs numériques comme Age nécessitent une conversion de chaîne en entier en utilisant Int32.Parse ou Convert.ToInt32. C'est essentiel pour éviter les erreurs de type.

Pour des types de données plus complexes, comme les dates, utilisez DateTime.Parse pour convertir les représentations en chaîne de dates en objets DateTime. Il est important d'être conscient du format de date utilisé dans votre fichier CSV et de s'assurer qu'il correspond au format attendu dans votre code. Les formats de date incohérents peuvent entraîner des erreurs d'analyse ou une interprétation incorrecte des données.

Conclusion

Vous venez d'apprendre comment lire, analyser et afficher les données d'un fichier CSV en utilisant IronXL en C#. Cette approche peut être utilisée sur différents types de structures de données et de formats de fichier. Ainsi, cela représente une compétence utile globale pour chaque développeur se tournant vers C# comme langage principal.

IronXL offre une version d'essai gratuite permettant aux utilisateurs d'expérimenter ses fonctionnalités. Une fois la période d'essai terminée, le tarif de la licence pour IronXL commence à $799.

Gardez à l'esprit que les exceptions et les cas limites doivent être traités pour écrire un code plus robuste, en particulier lors de la gestion de différents types de données et de l'utilisation de fichiers volumineux. Continuez à expérimenter et à explorer plus de fonctionnalités d'IronXL pour améliorer le traitement de vos données en C#. Bonne programmation !

Questions Fréquemment Posées

Comment puis-je lire des fichiers CSV dans une liste en C# ?

Vous pouvez lire des fichiers CSV dans une liste en C# en utilisant la bibliothèque IronXL. Tout d'abord, créez un projet console C# dans Visual Studio et installez IronXL via le gestionnaire de paquets NuGet. Puis, utilisez la méthode WorkBook.LoadCSV pour charger le fichier CSV et analyser les données dans une liste.

Quelle méthode dois-je utiliser pour charger un fichier CSV en C# ?

Pour charger un fichier CSV en C#, utilisez la méthode WorkBook.LoadCSV de la bibliothèque IronXL, qui prend le chemin du fichier comme paramètre.

Comment définir une structure de données pour correspondre aux contenus d'un fichier CSV ?

Définissez une classe, telle qu'une classe 'Person', avec des propriétés qui correspondent aux colonnes de votre fichier CSV. Cela aide à structurer les données récupérées du CSV dans un format orienté objets.

Quelle technique peut être utilisée pour ignorer la ligne d'en-tête dans un fichier CSV ?

Pour ignorer la ligne d'en-tête, implémentez un indicateur booléen pour vérifier si la ligne est la première et passez à l'itération suivante sans la traiter.

Comment puis-je gérer les lignes vides lors de l'analyse d'un fichier CSV en C# ?

Utilisez les propriétés de ligne de la bibliothèque IronXL, telles que IsEmpty, pour vérifier les lignes vides et les ignorer lors de l'analyse.

Quelle est l'importance du traitement des différents types de données lors du traitement des fichiers CSV ?

Traiter correctement les différents types de données garantit que les données sont traitées avec précision et empêche les erreurs d'incompatibilité de types, surtout lorsqu'il s'agit de champs numériques ou de date.

Quels sont les défis courants associés au traitement des fichiers CSV ?

Les défis courants incluent la gestion des divers types de données, l'ignorance des lignes vides ou mal formées, et l'assurance d'une analyse et d'un traitement précis des données sans erreurs.

Quels sont les avantages de l'utilisation d'une bibliothèque pour le traitement des fichiers CSV en C# ?

Utiliser la bibliothèque IronXL pour le traitement des CSV en C# simplifie le chargement et l'analyse des fichiers CSV avec ses méthodes intuitives, permettant aux développeurs de gérer efficacement les données.

Quelles étapes dois-je suivre pour configurer un projet C# pour la lecture de fichiers CSV ?

Commencez par créer un projet console C# dans Visual Studio, installez la bibliothèque IronXL à l'aide du gestionnaire de paquets NuGet, et utilisez la méthode WorkBook.LoadCSV pour charger et analyser les fichiers CSV dans une liste.

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