Passer au contenu du pied de page
UTILISATION D'IRONXL
Comment importer un CSV en Datatable en C# | IronXL

Comment importer un fichier CSV dans une table de données en C#

Bienvenue dans ce tutoriel pour débutants sur l'importation de fichiers CSV (valeurs séparées par des virgules) dans une DataTable en C# à l'aide d'IronXL . Ce guide vous propose une approche facile à suivre, vous assurant que même si vous débutez en C#, vous trouverez ce processus simple. Nous aborderons chaque étape, de la configuration de l'environnement à l'écriture du code source. À la fin de ce tutoriel, vous comprendrez clairement comment convertir des données CSV en DataTable, gérer les colonnes d'une DataTable et traiter différents aspects des documents CSV en C# à l'aide d'un lecteur de fichiers et d'IronXL.

Prérequis

Avant de commencer, assurez-vous d'avoir :

  • Connaissances de base en C#
  • Visual Studio installé sur votre machine locale
  • La bibliothèque IronXL, qui peut être obtenue via le gestionnaire de packages NuGet

Comprendre les principes de base

Qu'est-ce qu'un fichier CSV ?

Un fichier CSV (Comma Separated Values file) est un type de fichier texte brut qui utilise une structure spécifique pour organiser des données tabulaires. C'est un format courant pour l'échange de données car le CSV est simple, compact et compatible avec de nombreuses plateformes. Dans un fichier CSV, les données sont séparées par des virgules, et chaque nouvelle ligne correspond à une nouvelle ligne, les en-têtes de colonnes étant souvent présents sur la première ligne.

Comprendre DataTables en C

Un DataTable fait partie de la bibliothèque ADO.NET en C# et représente un tableau unique de données en mémoire. Il comprend des lignes et des colonnes, et chaque colonne peut être d'un type de données différent. Les DataTables sont extrêmement flexibles et peuvent représenter les données dans un format structuré, ce qui les rend idéaux pour la gestion des données de fichiers CSV.

Mise en place de votre projet

Étape 1 : Créer un nouveau projet C

  1. Ouvrez Visual Studio.
  2. Sélectionnez Fichier > Nouveau > Projet.
  3. Choisissez une application console C# ou une application Windows Forms, et nommez-la de manière appropriée.

Étape 2 : Installer IronXL

IronXL est une bibliothèque puissante qui vous permet de travailler avec des fichiers Excel et CSV en C#. Pour l'utiliser, vous devez l'installer via le gestionnaire de packages NuGet. Dans Visual Studio :

  1. Accédez à Outils > Gestionnaire de packages NuGet > Gérer les packages NuGet pour la solution .
  2. Recherchez IronXL.Excel .

Comment importer un fichier CSV dans une table de données en C# : Figure 1 - IronXL

  1. Installez le package dans votre projet.

Importer des fichiers CSV dans DataTables avec IronXL

Étape 1 : Configurez votre environnement

using IronXL;
using System.Data;
using IronXL;
using System.Data;
Imports IronXL
Imports System.Data
$vbLabelText   $csharpLabel

Ces instructions using incluent les espaces de noms nécessaires à notre tâche.

Étape 2 : Créer une méthode pour importer un fichier CSV

Définissez une classe, CsvToDataTable , avec une méthode statique ImportCsvToDataTable . Cette méthode sera chargée de convertir le fichier CSV en un DataTable .

public class CsvToDataTable
{
    public static DataTable ImportCsvToDataTable(string filePath)
    {
        // Code snippet to import CSV will be placed here
        return null; // Placeholder return statement
    }
}
public class CsvToDataTable
{
    public static DataTable ImportCsvToDataTable(string filePath)
    {
        // Code snippet to import CSV will be placed here
        return null; // Placeholder return statement
    }
}
Public Class CsvToDataTable
	Public Shared Function ImportCsvToDataTable(ByVal filePath As String) As DataTable
		' Code snippet to import CSV will be placed here
		Return Nothing ' Placeholder return statement
	End Function
End Class
$vbLabelText   $csharpLabel

Étape 3 : Charger le fichier CSV

Dans la méthode ImportCsvToDataTable , commencez par charger le fichier CSV. IronXL propose une méthode simple pour ce faire :

// Load the CSV file
WorkBook workbook = WorkBook.LoadCSV(filePath);
// Load the CSV file
WorkBook workbook = WorkBook.LoadCSV(filePath);
' Load the CSV file
Dim workbook As WorkBook = WorkBook.LoadCSV(filePath)
$vbLabelText   $csharpLabel

WorkBook.LoadCSV est une méthode d'IronXL permettant de charger des fichiers CSV. Ici, filePath correspond au chemin d'accès à votre fichier CSV.

Étape 4 : Convertir le fichier CSV en DataTable

Convertissez les données CSV chargées en un DataTable . Cette étape est cruciale car elle transforme les données en un format facilement manipulable et affichable dans une application C#.

// Get the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert CSV worksheet to DataTable
DataTable dataTable = sheet.ToDataTable();
return dataTable;
// Get the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert CSV worksheet to DataTable
DataTable dataTable = sheet.ToDataTable();
return dataTable;
' Get the first worksheet
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Convert CSV worksheet to DataTable
Dim dataTable As DataTable = sheet.ToDataTable()
Return dataTable
$vbLabelText   $csharpLabel

Ce fragment de code convertit les données CSV en un DataTable . La méthode DefaultWorkSheet récupère la première feuille de calcul du classeur, ce qui correspond à l'intégralité des données CSV dans le cas d'un fichier CSV. La méthode ToDataTable est une fonctionnalité puissante d'IronXL qui convertit efficacement les données CSV en une structure DataTable , en incluant l'en-tête de colonne s'il figure sur la première ligne du fichier CSV.

Étape 5 : Utilisez la méthode dans votre application

Utilisez maintenant la méthode ImportCsvToDataTable dans votre application. Par exemple, vous pourriez appeler cette méthode au démarrage de l'application ou lorsque l'utilisateur télécharge un fichier CSV.

// Usage
string csvFilePath = "csvfile.csv";
DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(csvFilePath);
// Usage
string csvFilePath = "csvfile.csv";
DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(csvFilePath);
' Usage
Dim csvFilePath As String = "csvfile.csv"
Dim dataTable As DataTable = CsvToDataTable.ImportCsvToDataTable(csvFilePath)
$vbLabelText   $csharpLabel

Cet extrait de code montre comment appeler la méthode ImportCsvToDataTable . Remplacez " csvfile.csv " par le chemin d'accès réel de votre fichier CSV.

Étape 6 : Utilisation du tableau de données de sortie

Une fois que vous avez la DataTable , vous pouvez effectuer diverses opérations telles que l'affichage des données dans une interface utilisateur, le filtrage ou le traitement des données. Voici quelques exemples :

Affichage des données dans une application console

foreach (DataRow row in dataTable.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write($"{item} ");
    }
    Console.WriteLine();
}
foreach (DataRow row in dataTable.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write($"{item} ");
    }
    Console.WriteLine();
}
For Each row As DataRow In dataTable.Rows
	For Each item In row.ItemArray
		Console.Write($"{item} ")
	Next item
	Console.WriteLine()
Next row
$vbLabelText   $csharpLabel

Ce code parcourt chaque ligne et chaque colonne du DataTable et affiche les données dans la console.

Filtrage des données

Vous pouvez utiliser LINQ pour filtrer les données dans le DataTable. Par exemple, si vous souhaitez sélectionner les lignes où une colonne spécifique remplit une condition :

var filteredRows = dataTable.AsEnumerable()
                            .Where(row => row.Field<string>("ColumnName") == "SomeValue");
var filteredRows = dataTable.AsEnumerable()
                            .Where(row => row.Field<string>("ColumnName") == "SomeValue");
Dim filteredRows = dataTable.AsEnumerable().Where(Function(row) row.Field(Of String)("ColumnName") = "SomeValue")
$vbLabelText   $csharpLabel

Remplacez " ColumnName " et " SomeValue " par le nom de la colonne et la valeur sur laquelle vous effectuez le filtrage.

Extrait de code complet

Voici le code source complet que vous pouvez utiliser dans votre projet :

using IronXL;
using System;
using System.Data;
using System.IO;

public class CsvToDataTable
{
    public static DataTable ImportCsvToDataTable(string filePath)
    {
        // Check if the file exists
        if (!File.Exists(filePath))
        {
            throw new FileNotFoundException($"The file at {filePath} was not found.");
        }

        // Load the CSV file
        WorkBook workbook = WorkBook.LoadCSV(filePath);
        // Get the first worksheet
        WorkSheet sheet = workbook.DefaultWorkSheet;
        // Convert the worksheet to DataTable
        DataTable dataTable = sheet.ToDataTable();
        return dataTable;
    }
}

class Program
{
    static void Main(string[] args)
    {
        // Usage
        try
        {
            string filePath = "sample_data.csv"; // CSV file path
            DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(filePath);
            foreach (DataRow row in dataTable.Rows)
            {
                foreach (var item in row.ItemArray)
                {
                    Console.Write($"{item} ");
                }
                Console.WriteLine();
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"An error occurred: {ex.Message}");
        }
    }
}
using IronXL;
using System;
using System.Data;
using System.IO;

public class CsvToDataTable
{
    public static DataTable ImportCsvToDataTable(string filePath)
    {
        // Check if the file exists
        if (!File.Exists(filePath))
        {
            throw new FileNotFoundException($"The file at {filePath} was not found.");
        }

        // Load the CSV file
        WorkBook workbook = WorkBook.LoadCSV(filePath);
        // Get the first worksheet
        WorkSheet sheet = workbook.DefaultWorkSheet;
        // Convert the worksheet to DataTable
        DataTable dataTable = sheet.ToDataTable();
        return dataTable;
    }
}

class Program
{
    static void Main(string[] args)
    {
        // Usage
        try
        {
            string filePath = "sample_data.csv"; // CSV file path
            DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(filePath);
            foreach (DataRow row in dataTable.Rows)
            {
                foreach (var item in row.ItemArray)
                {
                    Console.Write($"{item} ");
                }
                Console.WriteLine();
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"An error occurred: {ex.Message}");
        }
    }
}
Imports IronXL
Imports System
Imports System.Data
Imports System.IO

Public Class CsvToDataTable
	Public Shared Function ImportCsvToDataTable(ByVal filePath As String) As DataTable
		' Check if the file exists
		If Not File.Exists(filePath) Then
			Throw New FileNotFoundException($"The file at {filePath} was not found.")
		End If

		' Load the CSV file
		Dim workbook As WorkBook = WorkBook.LoadCSV(filePath)
		' Get the first worksheet
		Dim sheet As WorkSheet = workbook.DefaultWorkSheet
		' Convert the worksheet to DataTable
		Dim dataTable As DataTable = sheet.ToDataTable()
		Return dataTable
	End Function
End Class

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Usage
		Try
			Dim filePath As String = "sample_data.csv" ' CSV file path
			Dim dataTable As DataTable = CsvToDataTable.ImportCsvToDataTable(filePath)
			For Each row As DataRow In dataTable.Rows
				For Each item In row.ItemArray
					Console.Write($"{item} ")
				Next item
				Console.WriteLine()
			Next row
		Catch ex As Exception
			Console.WriteLine($"An error occurred: {ex.Message}")
		End Try
	End Sub
End Class
$vbLabelText   $csharpLabel

Vous pouvez utiliser ce code dans le fichier Program.cs . N'oubliez pas d'ajouter la licence IronXL si vous travaillez en environnement de production.

Résultat du code

Une fois le code exécuté, il chargera le fichier CSV et importera ses données dans la DataTable. Ensuite, le contenu des colonnes de la DataTable s'affichera dans la console. Cela permet de vérifier que les données sont correctement importées dans la DataTable.

Comment importer un fichier CSV dans une table de données en C# : Figure 2 - Sortie

Gérer différents scénarios

Dans la réalité, les fichiers CSV peuvent varier considérablement en termes de format et de structure. Il est important de gérer ces variations pour garantir la robustesse et la polyvalence de votre application. Voyons plus en détail comment gérer différents scénarios lors de l'importation de données CSV dans une DataTable avec IronXL.

Gestion d'un délimiteur différent

La virgule est le délimiteur par défaut dans les fichiers CSV. Cependant, les fichiers CSV n'utilisent pas toujours de virgules pour séparer les valeurs. Parfois, un point-virgule, une tabulation ou d'autres caractères sont utilisés comme délimiteurs. Pour gérer cela dans IronXL :

Spécifier un délimiteur personnalisé : avant de charger le fichier CSV, vous pouvez spécifier le délimiteur de votre fichier. Par exemple, si votre fichier utilise un point-virgule ( ; ), vous pouvez le configurer comme ceci :

WorkBook workbook = WorkBook.LoadCSV(filePath, listDelimiter: ";");
WorkBook workbook = WorkBook.LoadCSV(filePath, listDelimiter: ";");
Dim workbook As WorkBook = WorkBook.LoadCSV(filePath, listDelimiter:= ";")
$vbLabelText   $csharpLabel

Gestion des fichiers CSV volumineux

Lorsqu'on traite des fichiers CSV volumineux, il est important de prendre en compte l'utilisation de la mémoire et les performances. IronXL offre des moyens efficaces de gérer les fichiers volumineux sans charger l'intégralité du fichier en mémoire en une seule fois. Vous pouvez lire le fichier par morceaux ou utiliser les API de flux fournies par IronXL pour gérer efficacement l'utilisation de la mémoire.

Conclusion

L'importation de données CSV dans un DataTable à l'aide d'IronXL en C# est simple. Elle améliore les capacités de manipulation de données de votre application, vous permettant de gérer efficacement les fichiers CSV. Grâce aux étapes décrites dans ce tutoriel, les débutants peuvent facilement intégrer cette fonctionnalité à leurs projets C#.

IronXL propose un essai gratuit permettant aux utilisateurs de découvrir ses fonctionnalités. Pour ceux qui recherchent des fonctionnalités et une assistance plus avancées, des options de licence sont disponibles.

Questions Fréquemment Posées

Comment puis-je importer des données CSV dans un DataTable en C#?

Vous pouvez importer des données CSV dans un DataTable en C# en utilisant la méthode WorkBook.LoadCSV d'IronXL pour charger le fichier CSV puis le convertir en DataTable avec la méthode ToDataTable.

Quelles étapes sont nécessaires pour configurer un projet Visual Studio pour utiliser IronXL?

Pour configurer un projet Visual Studio pour utiliser IronXL, installez le package IronXL via le Gestionnaire de packages NuGet en allant dans Outils > Gestionnaire de packages NuGet > Gérer les packages NuGet pour la solution, et recherchez IronXL.Excel. Ensuite, ajoutez-le à votre projet.

IronXL peut-il gérer des fichiers CSV avec différents délimiteurs?

Oui, IronXL peut gérer des fichiers CSV avec différents délimiteurs en spécifiant un délimiteur personnalisé en utilisant le paramètre listDelimiter dans la méthode WorkBook.LoadCSV.

Que dois-je faire si je rencontre une erreur 'fichier non trouvé' lors du chargement d'un fichier CSV?

Si vous rencontrez une erreur 'fichier non trouvé', assurez-vous que le chemin du fichier est correct. Utilisez File.Exists(filePath) pour vérifier l'existence du fichier et éviter de telles erreurs.

Comment puis-je gérer efficacement de grands fichiers CSV en C#?

Pour gérer efficacement de grands fichiers CSV, IronXL propose des fonctionnalités comme la lecture de fichiers par blocs ou l'utilisation d'API de streaming, ce qui permet d'optimiser l'utilisation de la mémoire et les performances.

Quels sont les avantages de convertir des données CSV en DataTable?

Convertir des données CSV en DataTable permet une manipulation structurée des données, ce qui facilite la gestion, le filtrage et l'affichage des données dans une application C#.

Comment puis-je afficher le contenu d'un DataTable dans une application console C#?

Pour afficher le contenu d'un DataTable dans une application console C#, parcourez chaque DataRow et imprimez chaque élément en utilisant une boucle imbriquée pour montrer les données dans la console.

Qu'est-ce qu'un fichier CSV et pourquoi est-il utile?

Un fichier CSV, ou fichier de valeurs séparées par des virgules, est un fichier texte brut qui sépare les données par des virgules. Il est largement utilisé pour l'échange de données en raison de sa simplicité et de sa compatibilité avec de nombreuses applications.

Quelles sont les conditions préalables pour suivre le tutoriel sur l'importation de CSV en DataTable?

Pour suivre le tutoriel, vous avez besoin d'une compréhension basique de C#, Visual Studio installé sur votre machine, et de la bibliothèque IronXL, qui peut être obtenue via le Gestionnaire de packages NuGet.

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