COMPARAISON AVEC D'AUTRES COMPOSANTS

Comparaison entre IronXL et CsvHelper

Publié mai 9, 2022
Partager:

Travailler avec des fichiers CSV peut être une tâche difficile. De nombreuses bibliothèques sont disponibles aujourd'hui pour aider les développeurs à accomplir cette tâche sans qu'il soit nécessaire d'installer Microsoft Excel.

Dans cet article, nous allons discuter et comparer comment travailler avec des documents Microsoft Excel de manière programmatique dans les technologies C# .NET, que ce soit au format CSV ou au format standard XLSX, en utilisant deux des bibliothèques les plus populaires, IronXL et CsvHelper.

Voyons tout d'abord ce que les deux bibliothèques ont à offrir.

La bibliothèque IronXL

IronXL est une bibliothèque .NET qui facilite la lecture et l'édition de documents Microsoft Excel avec C#. IronXL for .NET est une bibliothèque logicielle autonome .NET pour la lecture d'une large gamme de formats de feuilles de calcul. Il ne nécessite pas l'installation de Microsoft Excel et ne dépend pas non plus d'Interop. Il fonctionne très bien avec les fichiers CSV.

IronXL est une API C# intuitive qui vous permet de lire, d'éditer et de créer des fichiers de feuilles de calcul Excel dans .NET avec des performances rapides comme l'éclair. IronXL prend pleinement en charge .NET Core, .NET Framework, Xamarin, Mobile, Linux, macOS et Azure.

IronXL est une bibliothèque de feuilles de calcul Excel pour .NET Core et .NET Framework pour C#.

L'ensemble des fonctionnalités d'IronXL

  • Charger, lire et modifier des données - à partir de XLS/XLSX/CSV/TSV
  • Enregistrement et exportation - vers XLS/XLSX/CSV/TSV/JSON
  • Plages - feuille de travail facile à utiliser ["A1:B10] syntaxe. Combinez et créez des gammes de manière intuitive.
  • Tri - permet de trier les plages, les colonnes et les lignes.
  • Stylisation - styles visuels des cellules, police, taille, motif d'arrière-plan, bordure, alignement et formats des nombres.

CsvHelper

Une bibliothèque .NET pour lire et écrire des fichiers CSV. Extrêmement rapide, flexible et facile à utiliser. Prise en charge de la lecture et de l'écriture d'objets de classe personnalisés. Tous les exemples de codes sont disponibles dans le paquet CsvHelper documentation install.

Comment utiliser CsvHelper en C#

  1. Installer la bibliothèque C# CsvHelper pour lire les fichiers CSV
  2. Exploiter CsvConfiguration pour définir la configuration de CSV
  3. Ouvrir le fichier avec le logiciel intégré C# StreamReader
  4. Introduire les instances créées aux étapes 2 et 3 dans CsvReader classee à lire
  5. Convertir les données en CSV en héritant de CsvHelper Convertisseur de type par défaut classe

Caractéristiques de CsvHelper

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

1. Créer une application console

Suivez les étapes suivantes pour créer une application console :

  • Démarrer l'IDE Visual Studio 2022.
  • Cliquez sur "Créer un nouveau projet".
  • Dans la page "Créer un nouveau projet", sélectionnez C# dans la liste déroulante du langage, Windows dans la liste Platformes et Console dans la liste "Types de projets".
  • Sélectionnez Application console (framework .NET) à partir des modèles de projet affichés.

    Créer un projet - Application console

  • Cliquez sur Suivant.
  • Dans l'écran Informations complémentaires, indiquez la version du framework que vous souhaitez utiliser. Nous utiliserons .NET Framework 4.8 dans cet exemple.

    Créer un projet - Framework .NET

  • 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 dans notre projet. Commençons par installer IronXL.

2. Installation de la bibliothèque C# d'IronXL

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

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

    Examinons chacun d'entre eux de plus près.

2.1. Utilisation de Visual Studio avec les paquets NuGet

Visual Studio propose le gestionnaire de paquets NuGet pour installer les paquets NuGet dans vos projets. Vous pouvez y accéder par le menu Projet ou en cliquant avec le bouton droit de la souris sur votre projet dans l'explorateur de solutions.

Sélection - Gestion - NuGet - Paquet

  • Maintenant, à partir de l'onglet Parcourir -> rechercher IronXL.Excel -> Installer

    Recherche d'IronXL

  • Et nous avons terminé.

2.2. Télécharger directement le paquet NuGet

Pour ce faire, il suffit de se rendre directement sur le site de NuGet et de télécharger le paquetage. Les étapes sont les suivantes :

  • Naviguez jusqu'àhttps://www.nuget.org/packages/IronXL.Excel
  • Sélectionnez "Télécharger le paquet"
  • Double-cliquez sur le paquet 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# est d'utiliser les étapes suivantes pour installer le paquet NuGet IronXL par l'intermédiaire de l'Invite de commande du développeur.

  • Ouvrez l'invite de commande Developer - qui se trouve généralement dans le dossier Visual Studio.
  • Tapez la commande suivante : PM > Install-Package IronXL.Excel
  • Appuyer sur Entrée
  • Cette opération permet de télécharger et d'installer le paquet
  • Rechargez votre projet Visual Studio et commencez à l'utiliser

2.4. Ajouter les directives d'utilisation nécessaires

  1. Dans l'explorateur de solutions, cliquez avec le bouton droit de la souris sur le fichier Program.cs, puis cliquez sur Afficher le code.
  2. Ajoutez les directives d'utilisation suivantes au début du fichier de code :
using IronXL;
using IronXL;
Imports IronXL
VB   C#

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 NuGet Package Manager

Pour télécharger et installer la bibliothèque C# CsvHelper, suivez les étapes suivantes pour installer le paquet NuGet via l'invite de commande Developer.

  • Ouvrez l'invite de commande Developer - qui se trouve généralement dans le dossier Visual Studio.
  • Tapez la commande suivante : PM> Install-Package CsvHelper -Version 27.2.1
  • Appuyer sur Entrée
  • Cette opération permet de télécharger et d'installer le paquet
  • Rechargez votre projet Visual Studio et commencez à l'utiliser

3.2. Téléchargement direct

Télécharger à partir du site web de NuGet : https://www.nuget.org/packages/CsvHelper/

4. Travailler avec des fichiers CSV en utilisant IronXL

Valeurs séparées par une virgule (CSV)le fichier 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. Manipuler ces fichiers pour effectuer des calculs peut être une tâche difficile, et IronXL fournit une option assez bonne et facile pour le faire sans 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 en une seule ligne de code.

Formats CSV vers Excel:

WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
WorkSheet ws = workbook.DefaultWorkSheet;
 
workbook.SaveAs("CsvToExcelConversion.xlsx");
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
WorkSheet ws = workbook.DefaultWorkSheet;
 
workbook.SaveAs("CsvToExcelConversion.xlsx");
Dim workbook As WorkBook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")
Dim ws As WorkSheet = workbook.DefaultWorkSheet
'
workbook.SaveAs("CsvToExcelConversion.xlsx")
VB   C#

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

La classe IronXL WorkBook représente une feuille Excel. Pour ouvrir un fichier Excel à l'aide de C#, nous utilisons WorkBook.Load et spécifions le chemin d'accès du fichier Excel (.xlsx). Le code suivant, d'une seule ligne, est utilisé pour 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")
VB   C#

Chaque WorkBook peut contenir plusieurs objets WorkSheet. Il s'agit 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 Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
//Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
'Open Sheet for reading
Dim worksheet = workbook.GetWorkSheet("sheetnamegoeshere")
VB   C#

Code pour la lecture des 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
VB   C#

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 est le suivant :

// Set Formulas
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
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
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()
VB   C#

4.3. Sauvegarde du document Excel en fichier CSV

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

WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
//Import .xls, .csv, or .tsv file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
//Saved as : SaveAsCSV.Sheet1.csv
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
//Import .xls, .csv, or .tsv file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
//Saved as : SaveAsCSV.Sheet1.csv
Dim wb As WorkBook = WorkBook.Load("Normal_Excel_File.xlsx")
'Import .xls, .csv, or .tsv file
wb.SaveAsCsv("SaveAsCSV.csv", ",")
'Saved as : SaveAsCSV.Sheet1.csv
VB   C#

5. Travailler avec des fichiers CSV en utilisant CsvHelper

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

5.1. Lire les fichiers CSV avec CsvHelper

Voici l'exemple de fichier CSV, il comporte trois colonnes de texte et une colonne de chiffres.

FirstName,LastName,Age,IsActive
Ali,Talal,30,Yes
Affan,Ahmad,31,No
Saad,Bhatti,31,Yes
FirstName,LastName,Age,IsActive
Ali,Talal,30,Yes
Affan,Ahmad,31,No
Saad,Bhatti,31,Yes
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'FirstName,LastName,Age,IsActive Ali,Talal,30,Yes Affan,Ahmad,31,No Saad,Bhatti,31,Yes
VB   C#

Nous allons mapper chaque ligne dans un objet de type Personne.

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int? Age { get; set; }
    public string IsActive { get; set; }
}
public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int? Age { get; set; }
    public string IsActive { get; set; }
}
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
VB   C#

Le code pour lire notre fichier CSV est ci-dessous.

var fileName = @"<path to our CSV file>";
var configuration = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    Encoding = Encoding.UTF8,
    Delimiter = ","
};
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>();
        foreach (var person in data)
        {
            // Do something with values in each row
        }
    }
}
var fileName = @"<path to our CSV file>";
var configuration = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    Encoding = Encoding.UTF8,
    Delimiter = ","
};
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>();
        foreach (var person in data)
        {
            // Do something with values in each row
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Le type de données est IEnumerable. CsvHelper associera automatiquement chaque colonne à la propriété portant le même nom. Par exemple, la valeur de la colonne Prénom sera mappée dans Person.FirstName. Nous pouvons alors itérer les données et accéder aux valeurs de chaque ligne.

5.2. Convertir les données d'un fichier CSV d'un type à un autre

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

public class CustomBooleanConverter : DefaultTypeConverter
{
    public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData)
    {
        return text.Equals("Yes", StringComparison.OrdinalIgnoreCase);
    }
}
public class CustomBooleanConverter : DefaultTypeConverter
{
    public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData)
    {
        return text.Equals("Yes", StringComparison.OrdinalIgnoreCase);
    }
}
Public Class CustomBooleanConverter
	Inherits DefaultTypeConverter

	Public Overrides Function ConvertFromString(ByVal text As String, ByVal row As IReaderRow, ByVal memberMapData As MemberMapData) As Object
		Return text.Equals("Yes", StringComparison.OrdinalIgnoreCase)
	End Function
End Class
VB   C#

Bien que bool soit un type standard .NET, le convertisseur par défaut ne peut gérer que les valeurs True/False, alors que notre fichier CSV contient des valeurs Yes/No. Dans ce cas, nous devons sous-classer le DefaultTypeConverter, puis surcharger la méthode ConvertFromString.

6. Licences

IronXL est un produit ouvertement commercial Bibliothèque C# pour Excel. Il est gratuit pour le développement et peut toujours faire l'objet d'une licence pour un déploiement commercial.Les licences sont disponibles pour l'utilisation d'un seul projet, pour les développeurs individuels, les agences et les entreprises internationales, ainsi que pour la redistribution SaaS et OEM. Toutes les licences comprennent une garantie de remboursement de 30 jours, un an d'assistance et de mises à jour du produit, la validité pour le développement, la mise en place et la production, ainsi qu'une licence permanente (achat unique). Le paquet Lite commence à partir de $749.

CsvHelper - lecture et é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 ce dont vous avez besoin pour pouvoir manipuler un fichier Excel. Elle est facile à utiliser et vous permet de convertir divers formats en XLSX, ainsi que de XLSX à d'autres formats, tels que CSV. Cette interconversion offre à l'utilisateur la possibilité de travailler facilement avec différents formats de fichiers.

En revanche, CsvHelper est conçu spécifiquement pour travailler 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 indications sur la manière d'utiliser CsvHelper dans votre projet.

Conclusion

IronXL a un net avantage sur CsvHelper, car il permet aux utilisateurs de travailler 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. Vous ne pouvez pas non plus ajouter de nouveaux enregistrements à un fichier CSV existant, car cela écrase simplement les entrées précédentes.

< PRÉCÉDENT
Comparaison entre IronXL et CsvWriter
SUIVANT >
Comparaison d'IronXL et du NPOI