using IronXL;
using System;
using System.Linq;
// Supported for XLSX, XLS, XLSM, XLTX, CSV and TSV
WorkBook workBook = WorkBook.Load("sample.xlsx");
// Select worksheet at index 0
WorkSheet workSheet = workBook.WorkSheets[0];
// Get any existing worksheet
WorkSheet firstSheet = workBook.DefaultWorkSheet;
// Select a cell and return the converted value
int cellValue = workSheet["A2"].IntValue;
// Read from ranges of cells elegantly.
foreach (var cell in workSheet["A2:A10"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Calculate aggregate values such as Min, Max and Sum
decimal sum = workSheet["A2:A10"].Sum();
// Linq compatible
decimal max = workSheet["A2:A10"].Max(c => c.DecimalValue);
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.
Exploiter CsvConfiguration pour définir la configuration de CSV
Ouvrir le fichier avec le logiciel intégré C# StreamReader
Introduire les instances créées aux étapes 2 et 3 dans CsvReader classe à lire
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 :
Utilisation de Visual Studio avec les paquets NuGet
Télécharger directement le paquet NuGet
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 :
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
Dans l'explorateur de solutions, cliquez avec le bouton droit de la souris sur le fichier Program.cs, puis cliquez sur Afficher le code.
Ajoutez les directives d'utilisation suivantes au début 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 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
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.
Dim workbook As WorkBook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")
Dim ws As WorkSheet = workbook.DefaultWorkSheet
'
workbook.SaveAs("CsvToExcelConversion.xlsx")
$vbLabelText $csharpLabel
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")
$vbLabelText $csharpLabel
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")
$vbLabelText $csharpLabel
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
$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 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()
$vbLabelText $csharpLabel
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
$vbLabelText $csharpLabel
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.
'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
$vbLabelText $csharpLabel
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
$vbLabelText $csharpLabel
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
}
}
}
Dim fileName = "<path to our CSV file>"
Dim configuration = New CsvConfiguration(CultureInfo.InvariantCulture) With {
.Encoding = Encoding.UTF8,
.Delimiter = ","
}
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)()
For Each person In data
' Do something with values in each row
Next person
End Using
End Using
End Using
$vbLabelText $csharpLabel
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
$vbLabelText $csharpLabel
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.
Jordi maîtrise parfaitement Python, C# et C++. Lorsqu'il ne met pas à profit ses compétences chez Iron Software, il se consacre à la programmation de jeux. Partageant des responsabilités en matière de tests de produits, de développement de produits et de recherche, Jordi apporte une valeur ajoutée considérable à l'amélioration continue des produits. Cette expérience variée le stimule et l'engage, et il dit que c'est l'un des aspects qu'il préfère dans son travail chez Iron Software. Jordi a grandi à Miami, en Floride, et a étudié l'informatique et les statistiques à l'université de Floride.
Des millions d'ingénieurs dans le monde entier lui font confiance
Réservez une démo en direct gratuite
Réservez une démonstration personnelle de 30 minutes.
Pas de contrat, pas de détails de carte, pas d'engagements.
Voici ce à quoi vous pouvez vous attendre :
Une démonstration en direct de notre produit et de ses principales fonctionnalités
Obtenez des recommandations de fonctionnalités spécifiques au projet
Toutes vos questions trouvent réponse pour vous assurer de disposer de toutes les informations dont vous avez besoin. (Aucune obligation de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre gratuit Démonstration en direct
Fiable par plus de 2 millions d'ingénieurs dans le monde entier