Test dans un environnement réel
Test en production sans filigrane.
Fonctionne partout où vous en avez besoin.
Les applications logicielles actuelles requièrent la capacité de créer des bases de données et de générer des rapports à l'aide de fichiers Excel. Il existe aujourd'hui de nombreuses bibliothèques qui permettent aux utilisateurs de faire cela sans avoir besoin de 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 en utilisant deux des bibliothèques les plus populaires, IronXL et ClosedXML pour lire, manipuler et écrire des rapports Excel.
IronXL et ClosedXML fournissent tous deux des méthodes pour créer, modifier et lire des documents Excel dans le Framework .NET. La question suivante est de décider quelle bibliothèque C# Excel est la mieux adaptée à votre projet. Cet article vous aidera à choisir la meilleure option pour vos applications.
Voyons d'abord ce que les deux bibliothèques ont à offrir, puis passons à la comparaison proprement dite.
IronXL est une bibliothèque .NET qui facilite la lecture et l'édition de 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.
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 de premier plan pour C#, basée sur .NET Core et .NET Framework.
System.Data
Objets --- travailler avec des feuilles de calcul Excel comme System.Data.DataSet
et System.Data.DataTable
objets.Style --- styles visuels des cellules, police, taille, motif d'arrière-plan, bordure, alignement et formats des nombres.
D'autres fonctionnalités d'IronXL peuvent être explorées à l'aide de cette pagelien.
ClosedXML est une bibliothèque .NET pour lire, manipuler et écrire des fichiers Excel 2007+(.xlsx, .xlsm) des dossiers. Il vise à fournir une interface intuitive et conviviale pour traiter avec la bibliothèque OpenXML sous-jacente. .xlsx est une extension de fichier pour un format de fichier de feuille de calcul OpenXML sous-jacent à l'API utilisé par Microsoft Excel. Les fichiers .xlsm supportent les macros. Les fichiers .xltm sont des fichiers modèles activés par des macros. Le format .xls est un format binaire propriétaire tandis que le format .xlsx est basé sur le format Office OpenXML.
ClosedXML est une bibliothèque .NET pour la génération de rapports dans Microsoft Excel sans qu'Excel soit installé sur la machine qui exécute le code.
ClosedXML dispose d'une interface conviviale avec des fonctions API étendues pour gérer la création et l'extraction de contenu dans Excel. Grâce à ces appels d'API et à ces demandes d'extraction, vous pouvez modifier le moindre détail d'une feuille Excel ou d'un classeur
Toutes les caractéristiques sont énumérées ci-dessous :
Formules
Validation
Hyper-Links
Protection(Niveau de la feuille et de la cellule)
Formatage conditionnel
Freeze Panes (gel des vitres)
Tables
Gammes
Styling
Configuration de la page(Impression)
Filtres automatiques
Commentaires
Le reste de l'article se poursuit comme suit :
Créer une application console
Installation de la bibliothèque C# d'IronXL
Installation de ClosedXML
Créer et enregistrer un nouveau classeur et une nouvelle feuille Excel
Lire le fichier Excel
Travailler avec des formules Excel
Licences
Suivez les étapes suivantes pour créer une application console :
Nommez le projet "DemoApp" et cliquez sur Suivant.
Dans l'écran Informations complémentaires, indiquez la version du framework que vous souhaitez utiliser. Nous utiliserons .NET Framework 6.0 dans cet exemple.
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 le logicielBibliothèque IronXL à l'aide des méthodes suivantes :
Utilisation de Visual Studio avec les paquets NuGet.
Installation manuelle de 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.
Ensuite, à partir de l'onglet Parcourir > rechercher IronXL.Excel > Installer
Une autre façon de télécharger et d'installer la bibliothèque IronXL C# consiste à suivre les étapes suivantes pour installer le paquet IronXL 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 :
Install-Package IronXL.Excel
Dans l'explorateur de solutions, cliquez avec le bouton droit de la souris sur le fichier Program.cs, puis cliquez sur Afficher le 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 ClosedXML.
Pour installer le paquet ClosedXML, vous pouvez le télécharger directement depuis NuGet ou depuis NuGet Package Manager/Console dans le projet.
Pour installer directement ClosedXML, cliquez sur ce lien lien.
Ouvrez le gestionnaire de paquets NuGet à partir de l'explorateur de solutions du projet, recherchez ClosedXML et cliquez sur installer.
Ou bien :
Ouvrez l'invite de commande Developer --- qui se trouve généralement dans le dossier Visual Studio.
Tapez la commande suivante :
PM> Install-Package ClosedXML
Dans l'explorateur de solutions, cliquez avec le bouton droit de la souris sur le fichier Program.cs, puis cliquez sur Afficher le code.
using ClosedXML.Excel;
using ClosedXML.Excel;
Imports ClosedXML.Excel
Un classeur est un fichier Excel contenant plusieurs feuilles de calcul avec des lignes et des colonnes. Les deux bibliothèques permettent de créer un nouveau classeur Excel et des feuilles de calcul. Examinons le code étape par étape.
Il n'y a rien de plus facile que de créer un nouveau classeur Excel à l'aide d'IronXL. Il suffit d'une ligne de code. Oui, vraiment. Ajoutez le code suivant à votre fonction statique void main dans le fichier Program.cs :
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Les deux XLS(ancienne version du fichier Excel) et XLSX(version actuelle et plus récente du fichier) peuvent être créés avec IronXL.
Et il est encore plus simple de créer une feuille de travail par défaut :
var worksheet = workbook.CreateWorkSheet("IronXL Features");
var worksheet = workbook.CreateWorkSheet("IronXL Features");
Dim worksheet = workbook.CreateWorkSheet("IronXL Features")
Vous pouvez désormais utiliser la variable de feuille de calcul pour définir les valeurs des cellules et faire presque tout ce qu'un fichier Excel peut faire.
//Add data and styles to the new worksheet
worksheet ["A1"].Value = "Hello World";
worksheet ["A2"].Style.BottomBorder.SetColor("#ff6600");
worksheet ["A2"].Style.BottomBorder.Type = IronXL.Styles.BorderType.Double;
//Add data and styles to the new worksheet
worksheet ["A1"].Value = "Hello World";
worksheet ["A2"].Style.BottomBorder.SetColor("#ff6600");
worksheet ["A2"].Style.BottomBorder.Type = IronXL.Styles.BorderType.Double;
'Add data and styles to the new worksheet
worksheet ("A1").Value = "Hello World"
worksheet ("A2").Style.BottomBorder.SetColor("#ff6600")
worksheet ("A2").Style.BottomBorder.Type = IronXL.Styles.BorderType.Double
Enregistrer le fichier Excel :
//Save spreadsheet
workbook.SaveAs("NewExcelFile.xlsx");
//Save spreadsheet
workbook.SaveAs("NewExcelFile.xlsx");
'Save spreadsheet
workbook.SaveAs("NewExcelFile.xlsx")
Le fichier de sortie se présente comme suit :
Vous pouvez également créer des fichiers Excel(.xlsx, .xlsm) facilement à l'aide de ClosedXML. Le code suivant est un exemple typique qui permet de générer un simple fichier Excel et de l'enregistrer. Vous pouvez ajouter une nouvelle feuille d'échantillons à votre classeur et attribuer des valeurs aux cellules dans votre application Excel.
// Create a new empty Excel file.
var workbook = new XLWorkbook();
// Create a new worksheet and set cell A1 value to 'Hello world!'.
var worksheet = workbook.Worksheets.Add("ClosedXML Features");
worksheet.Cell("A1").Value = "Hello world!";
// Save to XLSX file.
workbook.SaveAs("Spreadsheet.xlsx");
// Create a new empty Excel file.
var workbook = new XLWorkbook();
// Create a new worksheet and set cell A1 value to 'Hello world!'.
var worksheet = workbook.Worksheets.Add("ClosedXML Features");
worksheet.Cell("A1").Value = "Hello world!";
// Save to XLSX file.
workbook.SaveAs("Spreadsheet.xlsx");
' Create a new empty Excel file.
Dim workbook = New XLWorkbook()
' Create a new worksheet and set cell A1 value to 'Hello world!'.
Dim worksheet = workbook.Worksheets.Add("ClosedXML Features")
worksheet.Cell("A1").Value = "Hello world!"
' Save to XLSX file.
workbook.SaveAs("Spreadsheet.xlsx")
Le fichier de sortie se présente comme suit :
Les deux bibliothèques peuvent ouvrir et lire des documents Excel existants. Jetons un coup d'œil à l'exemple de code.
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 au fichier(.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 carnet de travail peut comporter plusieurs feuilles de calcul dans le document Excel. Si le classeur contient plusieurs 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
ClosedXML permet de lire des fichiers précédemment créés à partir de votre application C#. Vous pouvez importer un fichier Excel en utilisant le code suivant.
// Import Excel File from file's path.
var workbook = new XLWorkbook("SimpleTemplate.xlsx");
// Read worksheet from workbook using sheet number.
var worksheet1 = workbook.Worksheet(1);
// Read cell value from first sheet
var data = worksheet1.Cell("A1").GetValue<string>();
// Display on screen
Console.WriteLine(data);
// Import Excel File from file's path.
var workbook = new XLWorkbook("SimpleTemplate.xlsx");
// Read worksheet from workbook using sheet number.
var worksheet1 = workbook.Worksheet(1);
// Read cell value from first sheet
var data = worksheet1.Cell("A1").GetValue<string>();
// Display on screen
Console.WriteLine(data);
' Import Excel File from file's path.
Dim workbook = New XLWorkbook("SimpleTemplate.xlsx")
' Read worksheet from workbook using sheet number.
Dim worksheet1 = workbook.Worksheet(1)
' Read cell value from first sheet
Dim data = worksheet1.Cell("A1").GetValue(Of String)()
' Display on screen
Console.WriteLine(data)
Les formules Excel sont l'une des fonctions les plus importantes d'Excel. Ces deux bibliothèques disposent d'un puissant moteur de calcul de formules. Elles permettent de travailler avec des formules et de les appliquer facilement aux cellules.
Après avoir chargé 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 recalculating 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 recalculating 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 recalculating all formula values in all sheets.
workbook.EvaluateAll()
Vous pouvez également récupérer des formules et leurs valeurs :
// Get the formula's calculated value. e.g. "52"
string formulaValue = worksheet ["G30"].Value;
//Get the formula as a string. e.g. "Max(C3:C7)"
string formulaString = worksheet ["G30"].Formula;
//Save your changes with updated formulas and calculated values.
workbook.Save();
// Get the formula's calculated value. e.g. "52"
string formulaValue = worksheet ["G30"].Value;
//Get the formula as a string. e.g. "Max(C3:C7)"
string formulaString = worksheet ["G30"].Formula;
//Save your changes with updated formulas and calculated values.
workbook.Save();
' Get the formula's calculated value. e.g. "52"
Dim formulaValue As String = worksheet ("G30").Value
'Get the formula as a string. e.g. "Max(C3:C7)"
Dim formulaString As String = worksheet ("G30").Formula
'Save your changes with updated formulas and calculated values.
workbook.Save()
ClosedXML ne prend pas en charge toutes les formules et vous obtiendrez probablement une erreur désagréable si la formule n'est pas prise en charge ou s'il y a une erreur dans la formule. Veuillez tester vos formules avant de les mettre en production. Voyons comment les utiliser.
// Set Formulas
worksheet.Cell("A1").Value = "Hello World!";
worksheet.Cell("A2").FormulaA1 = "=MID(A1, 7, 5)";
// You can use Evaluate function to directly calculate formula,
var sum = worksheet.Evaluate("SUM(B1:B7)");
// Force recalculation
worksheet.RecalculateAllFormulas();
// Save Excel file
workbook.SaveAs("Formula Calculation.xlsx");
// Set Formulas
worksheet.Cell("A1").Value = "Hello World!";
worksheet.Cell("A2").FormulaA1 = "=MID(A1, 7, 5)";
// You can use Evaluate function to directly calculate formula,
var sum = worksheet.Evaluate("SUM(B1:B7)");
// Force recalculation
worksheet.RecalculateAllFormulas();
// Save Excel file
workbook.SaveAs("Formula Calculation.xlsx");
' Set Formulas
worksheet.Cell("A1").Value = "Hello World!"
worksheet.Cell("A2").FormulaA1 = "=MID(A1, 7, 5)"
' You can use Evaluate function to directly calculate formula,
Dim sum = worksheet.Evaluate("SUM(B1:B7)")
' Force recalculation
worksheet.RecalculateAllFormulas()
' Save Excel file
workbook.SaveAs("Formula Calculation.xlsx")
La propriété FormulaA1 fait référence à la cellule A1. Si vous faites référence à une autre cellule, vous devez l'ajouter à la propriété Formula. Par exemple, FormulaC2.
IronXL est une bibliothèque Excel C# ouvertement commerciale. 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.
Pour ClosedXML, les applications utilisant ce fichier DLL ne nécessitent pas de licence distincte, que ce soit pour un usage unique ou pour un usage commercial. Pour qu'une solution puisse fonctionner avec un ClosedXML, il suffit d'installer le paquet NuGet "ClosedXML" disponible publiquement. ClosedXML est sous licence MIT. La licence MIT est une licence permissive courte et simple dont les conditions ne requièrent que la préservation des mentions de copyright et de licence. Les travaux sous licence, les modifications et les travaux plus importants peuvent être distribués sous différentes conditions et sans le code source.
IronXL est une bibliothèque complète offrant tout ce dont vous avez besoin pour manipuler un fichier Excel. IronXL permet aux développeurs de lire, de générer et d'éditer des fichiers Excel(et autres fichiers de tableurs) dans les applications et sites web .NET. Il fournit une approche rapide et naturelle pour travailler avec Excel et d'autres fichiers de feuilles de calcul en C#.
ClosedXML est une bibliothèque .NET pour la lecture et l'écriture de fichiers Excel, qui facilite la création de fichiers Excel 2007+ pour les développeurs. Il fournit une méthode orientée objet pour manipuler les fichiers(similaire à VBA) sans avoir à se préoccuper des problèmes liés aux documents XML. Il peut être utilisé par n'importe quel langage .NET comme C# et Visual Basic(VB). Il fournit des fonctionnalités d'OpenXML, mais certaines d'entre elles ne sont pas encore mises en œuvre. Par exemple, les macros, l'intégration et les graphiques.
IronXL est également utile pour d'autres opérations Excel telles que le format des données des cellules, le tri, le style des cellules. Il peut également fonctionner avec des feuilles de calcul Excel en tant que System.Data.DataSet
et System.Data.DataTable
. Il prend en charge les applications basées sur la console, le serveur web et le bureau. Il est également compatible avec toutes les plateformes OS.
ClosedXML est une bibliothèque légère pour lire, manipuler et écrire des applications Excel en utilisant l'API OpenXML qui est rapide et plus facile à mettre en œuvre. Il permet d'effectuer toutes les principales opérations Excel telles que la mise en page, l'arrêt sur image, les liens hypertextes, les tableaux et le formatage conditionnel. Il n'y a pas de problèmes de surcharge ou de faible performance.
En comparaison, IronXL et ClosedXML sont tous deux rapides et précis lorsqu'il s'agit de feuilles de calcul Excel. Ils ne nécessitent pas d'installation ou de licence Microsoft Office pour créer des rapports Excel. Cependant, IronXL a un avantage sur ClosedXML, car ClosedXML n'est pas sûr pour les threads. IronXL est facile à utiliser et permet de convertir d'autres formats en XLSX, ainsi que de XLSX vers d'autres formats tels que CSV et HTML. ClosedXML ne permet pas cette conversion. Cette interconversion permet aux utilisateurs de travailler facilement avec d'autres formats de fichiers.
Désormais, vous pouvez obtenir cinq produits Iron pour laprix de deux seulement dans le package lite pour 1 développeur($1498) et illimité pour 5 998 $ et économisez jusqu'à 60 %.
10 produits API .NET pour vos documents de bureau