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 facile à utiliser
WorkSheet["A1:B10"]. 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.
- Installez la bibliothèque CsvHelper C# pour lire les fichiers CSV.
- Exploiter la classe `CsvConfiguration` pour définir la configuration CSV
- Ouvrir le fichier avec `StreamReader` intégré à C#
- Passer les instances créées aux étapes 2 et 3 à la classe `CsvReader` pour lire
- Convertir des données au format CSV en héritant de la classe `DefaultTypeConverter` de 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 : lire et écrire est aussi simple que
GetRecords<t>()etWriteRecords(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.
*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.
*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 :
- Utilisation de Visual Studio avec les packages NuGet
- Télécharger directement le Package NuGet
- 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 Package Manager 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.
*Sélectionner-Gérer-Package-NuGet*
- Maintenant, depuis l'onglet Parcourir -> recherchez IronXL.Excel -> Installer
*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.ExcelAppuyez 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
- Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le fichier Program.cs, puis cliquez sur Afficher le code.
- Ajoutez les directives using suivantes en haut du fichier de code :
using IronXL;
using IronXL;
Imports IronXL
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.1Appuyez 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")
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 du 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")
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")
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
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()
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"
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 mapper chaque ligne dans 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
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
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 itérer 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 avoir qu'un 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
Même si bool est un type .NET standard, le convertisseur par défaut ne peut gérer que la valeur 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 est une bibliothèque C# Excel commerciale. Son utilisation est gratuite pour le développement et il est toujours possible d'acquérir une licence pour un déploiement commercial. Des licences sont disponibles pour une utilisation par projet unique, pour des développeurs individuels, des agences et des entreprises mondiales, ainsi que pour la redistribution SaaS et OEM. 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 à partir de $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.
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.




