Test dans un environnement réel
Test en production sans filigrane.
Fonctionne partout où vous en avez besoin.
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.
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#.
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.
CsvConfiguration
pour définir la configuration de CSVStreamReader
CsvReader
classee à lireConvertisseur de type par défaut
classeSuivez les étapes suivantes pour créer une application console :
Sélectionnez Application console (framework .NET) à partir des modèles de projet affichés.
Créer un projet - Application console
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.
Vous pouvez télécharger et installer la bibliothèque IronXL en utilisant les méthodes suivantes :
Installation manuelle avec la DLL
Examinons chacun d'entre eux de plus près.
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
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 :
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.
PM > Install-Package IronXL.Excel
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.
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.
PM> Install-Package CsvHelper -Version 27.2.1
Télécharger à partir du site web de NuGet : https://www.nuget.org/packages/CsvHelper/
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.
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")
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")
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")
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
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()
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
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.
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
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
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
Le type de données est IEnumerable
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
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.
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.
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.
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.
9 produits de l'API .NET pour vos documents de bureau