Passer au contenu du pied de page
COMPARER à D'AUTRES COMPOSANTS

Une comparaison entre IronXL et CsvHelper

Travailler avec des fichiers CSV peut s'avérer une tâche complexe. De nombreuses bibliothèques sont aujourd'hui disponibles pour aider les développeurs dans cette tâche, sans qu'il soit nécessaire d'avoir Microsoft Excel installé.

Dans cet article, nous allons examiner et comparer comment travailler par programmation avec des documents Microsoft Excel en C# .NET Technologies, au format CSV ou au format XLSX standard, en utilisant deux des bibliothèques les plus populaires : IronXL et CsvHelper.

Commençons par examiner ce que les deux bibliothèques ont à offrir.

La bibliothèque IronXL

IronXL est une bibliothèque .NET qui facilite la lecture et la modification des documents Microsoft Excel avec C#. IronXL.Excel est une bibliothèque logicielle .NET autonome permettant de lire un large éventail de formats de feuilles de calcul. Il ne nécessite pas l'installation de Microsoft Excel et ne dépend pas d'Interop. Il fonctionne parfaitement avec les fichiers CSV.

IronXL est une API C# intuitive qui vous permet de lire, de modifier et de créer des fichiers de tableur Excel en .NET avec des performances ultra-rapides. IronXL prend entièrement en charge .NET Core, .NET Framework, Xamarin, les applications mobiles, Linux, macOS et Azure.

IronXL est une bibliothèque de tableur Excel de premier plan pour C#, compatible avec .NET Core et .NET Framework.

Ensemble de fonctionnalités d'IronXL

  • Charger, lire et modifier des données — à partir de fichiers XLS/XLSX/CSV/TSV
  • Enregistrement et exportation — aux formats XLS/XLSX/CSV/TSV/JSON
  • Plages — syntaxe WorkSheet["A1:B10"] facile à utiliser. Combinez et créez des gammes intuitivement.
  • Tri — trier les plages, les colonnes et les lignes.
  • Mise en forme — styles visuels des cellules, police, taille, motif d'arrière-plan, bordure, alignement et formats numériques.

CsvHelper

Une bibliothèque .NET pour la lecture et l'écriture de fichiers CSV. Extrêmement rapide, flexible et facile à utiliser. Prend en charge la lecture et l'écriture d'objets de classe personnalisés. Tous les exemples de code sont disponibles dans la documentation du package CsvHelper.

Fonctionnalités de CsvHelper

  • Rapide : compile les classes à la volée pour des performances extrêmement rapides
  • Flexible : conservateur à l'écrit, libéral à la lecture
  • Facile à utiliser : la lecture et l'écriture sont aussi simples que GetRecords () et WriteRecords(records)
  • Hautement configurable
  • Mode Linux
  • Faible utilisation de la mémoire

1. Créer une application console

Suivez les étapes ci-dessous pour créer une application console :

  • Démarrez l'IDE Visual Studio 2022.
  • Cliquez sur " Créer un nouveau projet ".
  • Sur la page " Créer un nouveau projet ", sélectionnez C# dans la liste déroulante Langage, Windows dans la liste Plateformes et Console dans la liste " Types de projets ".
  • Sélectionnez Application console (.NET Framework) parmi les modèles de projet affichés.
Csvhelper Alternatives 1 related to 1. Créer une application console

Créer un projet - Application console

  • Cliquez sur Suivant .
  • Dans l'écran Informations supplémentaires , spécifiez la version du Framework que vous souhaitez utiliser. Nous utiliserons .NET Framework 4.8 dans cet exemple.
Csvhelper Alternatives 2 related to 1. Créer une application console

Créer un projet - .NET Framework

  • Cliquez sur Créer pour terminer le processus.

Le projet est maintenant créé et nous sommes presque prêts à tester les bibliothèques. Cependant, nous devons encore les installer et les intégrer à notre projet. Commençons par installer IronXL.

2. Installation de la bibliothèque IronXL C

Vous pouvez télécharger et installer la bibliothèque IronXL en utilisant les méthodes suivantes :

  1. Utilisation de Visual Studio avec les packages NuGet
  2. Télécharger directement le Package NuGet
  3. Installation manuelle avec la DLL

Examinons-les de plus près.

2.1. Utilisation de Visual Studio avec les packages NuGet

Visual Studio fournit le gestionnaire de paquets NuGet pour installer des paquets NuGet dans vos projets. Vous pouvez y accéder via le Menu Projet, ou en cliquant avec le bouton droit sur votre projet dans l'Explorateur de solutions.

Csvhelper Alternatives 3 related to 2.1. Utilisation de Visual Studio avec les packages NuGet

Sélectionner-Gérer-Package-NuGet

  • Maintenant, depuis l'onglet Parcourir -> recherchez IronXL.Excel -> Installer
Csvhelper Alternatives 4 related to 2.1. Utilisation de Visual Studio avec les packages NuGet

Rechercher IronXL

Et voilà, c'est terminé.

2.2. Télécharger directement le package NuGet

Cela peut être fait en visitant directement le site de NuGet et en téléchargeant le paquet. Les étapes sont :

  • Accédez àhttps://www.nuget.org/packages/IronXL.Excel
  • Sélectionnez " Télécharger le package " Double-cliquez sur le package téléchargé. Le paquet sera installé. Rechargez votre projet Visual Studio et commencez à l'utiliser.

2.3. Installation manuelle avec la DLL

Une autre façon de télécharger et d'installer la bibliothèque IronXL C# consiste à suivre les étapes suivantes pour installer le package NuGet IronXL via l'invite de commandes développeur.

  • Ouvrez l' invite de commandes développeur , généralement située dans le dossier Visual Studio.
  • Saisissez la commande suivante : PM> Install-Package IronXL.Excel Appuyez sur Entrée. Cela téléchargera et installera le package Rechargez votre projet Visual Studio et commencez à l'utiliser.

2.4. Ajouter les directives using nécessaires

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le fichier Program.cs, puis cliquez sur Afficher le code.
  2. Ajoutez les directives using suivantes en haut du fichier de code :
using IronXL;
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

Tout est fait ! IronXL est téléchargé, installé et prêt à l'emploi. Cependant, avant cela, nous devons installer CsvHelper.

3. Installation de CsvHelper

3.1. Utilisation de la console du gestionnaire de packages NuGet

Pour télécharger et installer la bibliothèque C# CsvHelper, suivez les étapes suivantes pour installer le package NuGet via l'invite de commandes développeur.

  • Ouvrez l' invite de commandes développeur , généralement située dans le dossier Visual Studio.
  • Saisissez la commande suivante : PM> Install-Package CsvHelper -Version 27.2.1 Appuyez sur Entrée. Cela téléchargera et installera le package Rechargez votre projet Visual Studio et commencez à l'utiliser.

3.2. Téléchargement direct

Télécharger depuis le site web NuGet :https://www.nuget.org/packages/CsvHelper .

4. Utilisation des fichiers CSV avec IronXL

Un fichier CSV (Comma-Separated Values) est un fichier texte délimité qui utilise une virgule pour séparer les valeurs. Chaque ligne du fichier est un enregistrement de données. La manipulation de ces fichiers pour effectuer des calculs peut s'avérer complexe, et IronXL offre une solution simple et efficace pour y parvenir sans utiliser Microsoft Excel. Commençons par convertir un fichier CSV en un fichier Excel normal.

4.1. Conversion d'un fichier CSV au format Excel

Le processus est assez simple et facile. Cela se fait généralement avec une seule ligne de code.

Conversion de fichiers CSV en formats Excel :

// Load the CSV file and convert it to an Excel format
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Access the default worksheet
WorkSheet ws = workbook.DefaultWorkSheet;

// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");
// Load the CSV file and convert it to an Excel format
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Access the default worksheet
WorkSheet ws = workbook.DefaultWorkSheet;

// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");
' Load the CSV file and convert it to an Excel format
Dim workbook As WorkBook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")
' Access the default worksheet
Dim ws As WorkSheet = workbook.DefaultWorkSheet

' Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx")
$vbLabelText   $csharpLabel

4.2. Lire et manipuler des fichiers CSV convertis à l'aide d'IronXL

La classe IronXL WorkBook représente une feuille Excel. Pour ouvrir un fichier Excel en utilisant C#, nous utilisons WorkBook.Load et spécifions le chemin d'accès au fichier Excel (.xlsx). La ligne de code suivante permet d'ouvrir le fichier en lecture :

// Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets/sample.xlsx");
// Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets/sample.xlsx");
' Load WorkBook
Dim workbook = WorkBook.Load("Spreadsheets/sample.xlsx")
$vbLabelText   $csharpLabel

Chaque WorkBook peut contenir plusieurs objets WorkSheet . Ce sont des feuilles de calcul du document Excel. Si le classeur contient des feuilles de calcul, récupérez-les par leur nom comme suit :

// Open the sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
// Open the sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
' Open the sheet for reading
Dim worksheet = workbook.GetWorkSheet("sheetnamegoeshere")
$vbLabelText   $csharpLabel

Code pour lire les valeurs des cellules :

// Read from ranges of cells elegantly
foreach (var cell in worksheet["A2:A10"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Read from ranges of cells elegantly
foreach (var cell in worksheet["A2:A10"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
' Read from ranges of cells elegantly
For Each cell In worksheet("A2:A10")
	Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next cell
$vbLabelText   $csharpLabel

Après avoir chargé et lu le classeur et la feuille de calcul, l'exemple de code suivant peut être utilisé pour modifier les formules ou les appliquer à des cellules spécifiques. Le code se présente comme suit :

// Set formulas in specific cells
worksheet["A1"].Formula = "SUM(B8:C12)";
worksheet["B8"].Formula = "=C9/C11";
worksheet["G30"].Formula = "MAX(C3:C7)";

// Force recalculate all formula values in all sheets
workbook.EvaluateAll();
// Set formulas in specific cells
worksheet["A1"].Formula = "SUM(B8:C12)";
worksheet["B8"].Formula = "=C9/C11";
worksheet["G30"].Formula = "MAX(C3:C7)";

// Force recalculate all formula values in all sheets
workbook.EvaluateAll();
' Set formulas in specific cells
worksheet("A1").Formula = "SUM(B8:C12)"
worksheet("B8").Formula = "=C9/C11"
worksheet("G30").Formula = "MAX(C3:C7)"

' Force recalculate all formula values in all sheets
workbook.EvaluateAll()
$vbLabelText   $csharpLabel

4.3. Enregistrement du document Excel au format CSV

L'écriture de fichiers CSV est un processus simple avec IronXL. Le code suivant enregistre simplement le fichier Excel au format CSV en utilisant la méthode SaveAsCsv .

// Load the Excel Workbook
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");

// Save the workbook as a CSV file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
// This will save as "SaveAsCSV.Sheet1.csv"
// Load the Excel Workbook
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");

// Save the workbook as a CSV file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
// This will save as "SaveAsCSV.Sheet1.csv"
' Load the Excel Workbook
Dim wb As WorkBook = WorkBook.Load("Normal_Excel_File.xlsx")

' Save the workbook as a CSV file
wb.SaveAsCsv("SaveAsCSV.csv", ",")
' This will save as "SaveAsCSV.Sheet1.csv"
$vbLabelText   $csharpLabel

5. Utilisation des fichiers CSV avec CsvHelper

La lecture des fichiers CSV fait partie de ces tâches qui paraissent beaucoup plus faciles qu'elles ne le sont en réalité. La bibliothèque CsvHelper facilite l'écriture de code sûr en termes de types, rapide et flexible.

5.1. Lire des fichiers CSV avec CsvHelper

Voici un exemple de fichier CSV ; il comporte trois colonnes de texte et une colonne de nombres.

FirstName,LastName,Age,IsActive
Ali,Talal,30,Yes
Affan,Ahmad,31,No
Saad,Bhatti,31,Yes

Nous allons associer chaque ligne à un objet de type Person .

// Define the Person class to map CSV records
public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int? Age { get; set; }
    public string IsActive { get; set; }
}
// Define the Person class to map CSV records
public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int? Age { get; set; }
    public string IsActive { get; set; }
}
' Define the Person class to map CSV records
Public Class Person
	Public Property FirstName() As String
	Public Property LastName() As String
	Public Property Age() As Integer?
	Public Property IsActive() As String
End Class
$vbLabelText   $csharpLabel

Le code permettant de lire notre fichier CSV se trouve ci-dessous.

// Define the path to the CSV file
var fileName = @"<path to our CSV file>";

// Configure CsvHelper
var configuration = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    Encoding = Encoding.UTF8,
    Delimiter = ","
};

// Read CSV file
using (var fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
    using (var textReader = new StreamReader(fs, Encoding.UTF8))
    using (var csv = new CsvReader(textReader, configuration))
    {
        var data = csv.GetRecords<Person>();

        // Iterate over each person record
        foreach (var person in data)
        {
            // Process each Person object
        }
    }
}
// Define the path to the CSV file
var fileName = @"<path to our CSV file>";

// Configure CsvHelper
var configuration = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    Encoding = Encoding.UTF8,
    Delimiter = ","
};

// Read CSV file
using (var fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
    using (var textReader = new StreamReader(fs, Encoding.UTF8))
    using (var csv = new CsvReader(textReader, configuration))
    {
        var data = csv.GetRecords<Person>();

        // Iterate over each person record
        foreach (var person in data)
        {
            // Process each Person object
        }
    }
}
' Define the path to the CSV file
Dim fileName = "<path to our CSV file>"

' Configure CsvHelper
Dim configuration = New CsvConfiguration(CultureInfo.InvariantCulture) With {
	.Encoding = Encoding.UTF8,
	.Delimiter = ","
}

' Read CSV file
Using fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read)
	Using textReader = New StreamReader(fs, Encoding.UTF8)
	Using csv = New CsvReader(textReader, configuration)
		Dim data = csv.GetRecords(Of Person)()

		' Iterate over each person record
		For Each person In data
			' Process each Person object
		Next person
	End Using
	End Using
End Using
$vbLabelText   $csharpLabel

Le type de data est IEnumerable<Person> . CsvHelper associera automatiquement chaque colonne à la propriété portant le même nom. Par exemple, la valeur de la colonne FirstName sera mappée dans Person.FirstName . Nous pouvons ensuite parcourir data et accéder aux valeurs de chaque ligne.

5.2. Convertir des données de fichiers CSV d'un type à un autre

Les fichiers CSV contiennent principalement des données textuelles. Par exemple, la colonne " âge " contient une valeur entière, tandis que le fichier CSV ne contient que du texte. CsvHelper peut convertir des données de chaînes de caractères en types .NET standard (Boolean, Int32, Int64, Enum). Dans notre cas, nous avons un type de données booléen IsActive , qui ne peut prendre que les valeurs True/False et contient des valeurs non standard. Il est possible de le convertir en créant un convertisseur personnalisé. Le style du code est le suivant :

// Custom Boolean Converter for CsvHelper
public class CustomBooleanConverter : DefaultTypeConverter
{
    public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData)
    {
        // Convert "Yes" to true and anything else to false
        return text.Equals("Yes", StringComparison.OrdinalIgnoreCase);
    }
}
// Custom Boolean Converter for CsvHelper
public class CustomBooleanConverter : DefaultTypeConverter
{
    public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData)
    {
        // Convert "Yes" to true and anything else to false
        return text.Equals("Yes", StringComparison.OrdinalIgnoreCase);
    }
}
' Custom Boolean Converter for CsvHelper
Public Class CustomBooleanConverter
	Inherits DefaultTypeConverter

	Public Overrides Function ConvertFromString(ByVal text As String, ByVal row As IReaderRow, ByVal memberMapData As MemberMapData) As Object
		' Convert "Yes" to true and anything else to false
		Return text.Equals("Yes", StringComparison.OrdinalIgnoreCase)
	End Function
End Class
$vbLabelText   $csharpLabel

Bien que bool soit un type .NET standard, le convertisseur par défaut ne peut gérer que les valeurs True/False , alors que notre fichier CSV contient Yes/No . Ici, nous devons créer une sous-classe de DefaultTypeConverter , puis redéfinir la méthode ConvertFromString .

6. Licence

IronXL is an openly commercial C# Excel library. Son utilisation est gratuite pour le développement et il est toujours possible d'acquérir une licence pour un déploiement commercial. Licenses are available for single-project use, single developers, agencies, and global corporations, as well as SaaS and OEM redistribution. Toutes les licences incluent une garantie de remboursement de 30 jours, un an de support produit et de mises à jour, validité pour dev/staging/production, et également une licence permanente (achat unique). Le package Lite commence par $799 .

CsvHelper — la lecture et l'écriture de fichiers CSV — est entièrement gratuit pour un usage commercial.

7. Résumé et conclusion

Résumé

IronXL est une bibliothèque complète offrant tout le nécessaire pour manipuler un fichier Excel. Simple d'utilisation, elle permet de convertir différents formats en XLSX, et inversement, notamment du XLSX vers d'autres formats comme le CSV. Cette interconversion offre à l'utilisateur une grande flexibilité pour travailler facilement avec divers formats de fichiers.

En revanche, CsvHelper est conçu spécifiquement pour fonctionner avec les formats de fichiers CSV, ce qui signifie qu'il ne peut traiter que les fichiers CSV. Tous les exemples de code se trouvent dans les fichiers de documentation de CsvHelper. La documentation vous donne des instructions sur la manière d'utiliser CsvHelper dans votre projet.

Conclusion

IronXL présente un net avantage sur CsvHelper, car il prend en charge les utilisateurs travaillant avec plusieurs formats. De plus, vous pouvez appliquer des formules et des styles selon votre choix, alors que CsvHelper ne permet que la lecture et l'écriture de fichiers CSV avec des options limitées. De plus, vous ne pouvez pas ajouter de nouveaux enregistrements à un fichier CSV existant, car cela écrase simplement les entrées précédentes.

Veuillez noterCsvHelper est une marque déposée de son propriétaire respectif. Ce site n'est ni affilié à, ni approuvé par, ni sponsorisé par CsvHelper. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont faites à titre d'information uniquement et reflètent les informations publiquement disponibles au moment de la rédaction.

Questions Fréquemment Posées

Comment puis-je convertir des fichiers Excel en différents formats en utilisant C#?

Avec IronXL, vous pouvez convertir des fichiers Excel en divers formats tels que XLS, XLSX, CSV et TSV. Cela peut être fait en chargeant le fichier avec IronXL et en le sauvegardant dans le format désiré en utilisant ses options d'exportation polyvalentes.

Quels sont les avantages de l'utilisation d'IronXL par rapport à CsvHelper pour la manipulation des fichiers Excel?

IronXL offre des fonctionnalités complètes pour travailler avec plusieurs formats Excel, y compris XLS, XLSX et CSV. Il prend en charge des fonctionnalités comme la manipulation de données, le stylisme et l'application de formules, le rendant idéal pour les projets nécessitant une gestion étendue des fichiers Excel. En revanche, CsvHelper est spécifiquement conçu pour des opérations rapides et efficaces sur les fichiers CSV.

Comment installer IronXL pour un projet C#?

Vous pouvez installer IronXL via le gestionnaire de packages NuGet dans Visual Studio en recherchant 'IronXL'. Alternativement, vous pouvez télécharger le package NuGet directement ou l'installer manuellement en référencant le DLL dans votre projet.

IronXL peut-il être utilisé sans installer Microsoft Excel?

Oui, IronXL n'exige pas que Microsoft Excel soit installé sur votre système. Il fonctionne de manière indépendante pour lire, éditer, et créer des fichiers Excel dans divers formats.

Comment lire et écrire des fichiers CSV en utilisant CsvHelper?

CsvHelper vous permet de définir une classe pour mapper les enregistrements CSV, de configurer les paramètres de CsvHelper, et d'utiliser le CsvReader et CsvWriter pour gérer facilement les opérations sur les fichiers CSV.

Qu'est-ce qui rend CsvHelper un choix populaire pour la gestion des fichiers CSV?

CsvHelper est connu pour sa rapidité, sa flexibilité et sa facilité d'utilisation. Il prend en charge les objets de classe personnalisée et les conversions de type, le rendant un choix privilégié pour les projets axés uniquement sur le traitement des données CSV.

Y a-t-il une exigence de licence pour utiliser IronXL?

Oui, le déploiement d'IronXL dans un environnement commercial nécessite une licence payante. Cela contraste avec CsvHelper, qui est gratuit pour une utilisation commerciale.

Quels types de projets bénéficieraient le plus d'IronXL?

Les projets nécessitant une manipulation étendue de plusieurs formats de fichiers Excel, y compris des fonctionnalités comme le stylisme, le tri des données, et le calcul de formules, bénéficieraient le plus de l'utilisation d'IronXL en raison de sa vaste gamme de fonctionnalités.

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