Passer au contenu du pied de page
COMPARER à D'AUTRES COMPOSANTS

Créer des fichiers Excel en C# à l'aide de la comparaison interop : IronXL et les bibliothèques alternatives

Introduction

La création de fichiers Excel par programmation est une exigence fondamentale dans de nombreuses applications C#. Bien que l'approche traditionnelle de la création de fichiers Excel en C# à l'aide de Microsoft.Office.Interop.Excel ait été populaire, elle s'accompagne de limitations, comme le fait de nécessiter l'installation de Microsoft Excel et de s'appuyer sur des assemblages d'interopérabilité primaires. Les alternatives modernes aux bibliothèques Excel, comme IronXL, vous permettent de créer un classeur Excel, de travailler avec plusieurs feuilles de calcul et de générer des fichiers XLSX ou CSV sans Microsoft Office. Cet article compare la manière dont différentes bibliothèques gèrent la création de fichiers Excel, en fournissant des exemples de code et des conseils pour les développeurs .NET.

Aperçu rapide de la comparaison

Caractéristiques Excel Interop IronXL EPPlus ClosedXML NPOI GemBox Aspose
Installation d'Excel requise Oui No No Non No No No
Déploiement du serveur Non recommandé Oui Oui Oui Yes Oui Oui
Prise en charge de la plate-forme Windows uniquement Multiplateforme Multiplateforme Multiplateforme Multiplateforme Multiplateforme Multiplateforme
Support XLS Oui Oui No Non Yes Oui Oui
Prise en charge de XLSX Oui Oui Oui Oui Yes Oui Oui
Courbe d'apprentissage Steep Facile d'accès Facile d'accès Facile d'accès Modéré Facile d'accès Modéré
Licence commerciale Licence Office À partir de 749 A partir de 449 Gratuit (MIT) Gratuit (Apache) À partir de 590 euros À partir de 999
Efficacité de la mémoire Faible Excellente Bon Bon Faible Excellente Bon

Note:"Excel Interop" nécessite l'installation de Microsoft Excel, ainsi que de l'assemblage interop primaire. Des bibliothèques alternatives, telles qu'IronXL, permettent de créer des fichiers Excel, des classeurs et des feuilles de calcul sans nécessiter Office, et prennent en charge les fichiers XLSX, les fichiers CSV et les feuilles de calcul multiples.

Pourquoi aller au-delà de l'interopérabilité Excel ?

Microsoft.Office.Interop.Excel Les alternatives à Excel Interopsont essentielles car Microsoft Excel doit être installé sur chaque machine où votre application est exécutée. Cette dépendance crée des difficultés de déploiement, notamment pour les environnements serveur où Microsoft met explicitement en garde contre l'automatisation d'Office. L'utilisation d'Interop sans Excel entraîne des exceptions, des messages d'avertissement ou des tentatives infructueuses de création d'un document Excel par programmation. Les applications souffrent également de problèmes de dépendance COM, de conflits de versions et de performances médiocres dus à l'exécution d'Excel en tant que processus en arrière-plan.

Les bibliothèques Excel modernes, telles qu'IronXL, éliminent ces problèmes. Vous pouvez créer des fichiers Excel, écrire des données dans des feuilles de calcul, générer des fichiers CSV ou XML et travailler avec de nouveaux classeurs Excel sans dépendre d'Office, de l'objet application Excel ou de l'assembly d'interopérabilité principal. Les développeurs peuvent également utiliser Visual Studio, Visual Basic ou des projets d'application console pour implémenter l'automatisation Excel dans des environnements Windows ou multiplateformes.

Commencez par l'essai gratuit d'IronXL pour éliminer complètement ces dépendances.

Création de fichiers Excel avec Interop

Commençons par examiner l'approche traditionnelle utilisant Excel Interop :

using Excel = Microsoft.Office.Interop.Excel;
// Create Excel application instance
Excel.Application excelApp = new Excel.Application();
Excel.Workbook workbook = excelApp.Workbooks.Add();
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[1];
// Add data to cells
worksheet.Cells[1, 1] = "Product";
worksheet.Cells[1, 2] = "Price";
worksheet.Cells[2, 1] = "Widget";
worksheet.Cells[2, 2] = 9.99;
// Save and cleanup
workbook.SaveAs(@"C:\temp\products.xlsx");
workbook.Close();
excelApp.Quit();
// Release COM objects
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
using Excel = Microsoft.Office.Interop.Excel;
// Create Excel application instance
Excel.Application excelApp = new Excel.Application();
Excel.Workbook workbook = excelApp.Workbooks.Add();
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[1];
// Add data to cells
worksheet.Cells[1, 1] = "Product";
worksheet.Cells[1, 2] = "Price";
worksheet.Cells[2, 1] = "Widget";
worksheet.Cells[2, 2] = 9.99;
// Save and cleanup
workbook.SaveAs(@"C:\temp\products.xlsx");
workbook.Close();
excelApp.Quit();
// Release COM objects
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Ce code nécessite l'installation d'Excel, le nettoyage manuel des objets COM et ne fonctionnera pas sur les plateformes autres que Windows. La complexité augmente lorsqu'il s'agit de gérer plusieurs feuilles de calcul, d'enregistrer dans différents formats de fichiers ou de travailler dans un environnement serveur. C'est pourquoi de nombreux développeurs recherchent une bibliothèque Excel qui ne nécessite pas Microsoft Office.

Comment IronXLse compare-t-il ?

IronXL élimine ces complications grâce à une API moderne et intuitive pour l'automatisation d'Excel sans Microsoft Office :

using IronXL;
// Create workbook without Excel
WorkBook workbook = WorkBook.Create();
WorkSheet worksheet = workbook.CreateWorkSheet("Products");
// Add data using familiar syntax
worksheet["A1"].Value = "Product";
worksheet["B1"].Value = "Price";
worksheet["A2"].Value = "Widget";
worksheet["B2"].Value = 9.99;
// Apply formatting
worksheet["A1:B1"].Style.Font.Bold = true;
worksheet["B2"].FormatString = "$#,###";
// Save with one line
workbook.SaveAs("products.xlsx");
using IronXL;
// Create workbook without Excel
WorkBook workbook = WorkBook.Create();
WorkSheet worksheet = workbook.CreateWorkSheet("Products");
// Add data using familiar syntax
worksheet["A1"].Value = "Product";
worksheet["B1"].Value = "Price";
worksheet["A2"].Value = "Widget";
worksheet["B2"].Value = 9.99;
// Apply formatting
worksheet["A1:B1"].Style.Font.Bold = true;
worksheet["B2"].FormatString = "$#,###";
// Save with one line
workbook.SaveAs("products.xlsx");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Créer des fichiers Excel en C# à l'aide de la comparaison Interop : IronXLet les bibliothèques alternatives : Image 1 - Sortie IronXL

IronXL vous permet de créer par programmation un fichier Excel, un nouveau classeur et plusieurs feuilles de calcul. Vous pouvez écrire des données, afficher des données et gérer des fichiers XLS, XLSX, CSV ou XML sans avoir Microsoft Excel installé ni référencer l'assembly d'interopérabilité principal. Cela en fait une bibliothèque Excel entièrement gérée, adaptée à .NET Framework, .NET Core, aux applications console et aux environnements multiplateformes.

IronXL étant disponible via un package NuGet, vous pouvez l'ajouter directement à votre projet Visual Studio sans vous soucier de l'installation de Microsoft Office. Il n'est pas nécessaire de gérer l'objet d'application Excel ou de libérer les objets COM manuellement, ce qui réduit le risque d'exceptions ou de messages d'avertissement. En savoir plus sur la création de fichiers Excel avec IronXL ou explorer les formules et calculs Excel.

Commencez avec IronXL maintenant.
green arrow pointer

Comment se comparent les autres bibliothèques ?

Mise en œuvre d'EPPlus

EPPlus offre une API claire mais nécessite une configuration de licence depuis la version 5, comme indiqué dans les discussions sur Stack Overflow :

using OfficeOpenXml;
// Set license context (required from v5+)
ExcelPackage.License.SetNonCommercialPersonal("Test");
using (var package = new ExcelPackage())
{
    var worksheet = package.Workbook.Worksheets.Add("Products");
    worksheet.Cells[1, 1].Value = "Product";
    worksheet.Cells[1, 2].Value = "Price";
    worksheet.Cells[2, 1].Value = "Widget";
    worksheet.Cells[2, 2].Value = 9.99;
    package.SaveAs(new FileInfo("products.xlsx"));
}
using OfficeOpenXml;
// Set license context (required from v5+)
ExcelPackage.License.SetNonCommercialPersonal("Test");
using (var package = new ExcelPackage())
{
    var worksheet = package.Workbook.Worksheets.Add("Products");
    worksheet.Cells[1, 1].Value = "Product";
    worksheet.Cells[1, 2].Value = "Price";
    worksheet.Cells[2, 1].Value = "Widget";
    worksheet.Cells[2, 2].Value = 9.99;
    package.SaveAs(new FileInfo("products.xlsx"));
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Créer des fichiers Excel en C# à l'aide de la comparaison Interop : IronXLet les bibliothèques alternatives : Image 2 - Sortie EPPlus

EPPlus vous permet de créer des feuilles de calcul Excel, d'écrire et d'afficher des données, et de les exporter vers des fichiers XLSX ou CSV. Cependant, il ne prend pas en charge les anciens formats XLS et une licence commerciale est requise pour une utilisation professionnelle. Les développeurs travaillant avec .NET Core ou .NET Framework peuvent intégrer EPPlusvia le package NuGet dans les projets Visual Studio et les applications console.

Approche ClosedXML

ClosedXML propose une solution open source dotée d'une API intuitive :

using ClosedXML.Excel;
using (var workbook = new XLWorkbook())
{
    var worksheet = workbook.Worksheets.Add("Products");
    worksheet.Cell("A1").Value = "Product";
    worksheet.Cell("B1").Value = "Price";
    worksheet.Cell("A2").Value = "Widget";
    worksheet.Cell("B2").Value = 9.99;
    workbook.SaveAs("products.xlsx");
}
using ClosedXML.Excel;
using (var workbook = new XLWorkbook())
{
    var worksheet = workbook.Worksheets.Add("Products");
    worksheet.Cell("A1").Value = "Product";
    worksheet.Cell("B1").Value = "Price";
    worksheet.Cell("A2").Value = "Widget";
    worksheet.Cell("B2").Value = 9.99;
    workbook.SaveAs("products.xlsx");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Créer des fichiers Excel en C# à l'aide de la comparaison Interop : IronXLet les bibliothèques alternatives : Image 3 - Sortie ClosedXML

ClosedXML prend en charge les fichiers XLSX et les feuilles de calcul Excel, ce qui simplifie la création de feuilles Excel sans avoir Microsoft Office installé. Il fonctionne sur plusieurs feuilles de calcul, gère les fichiers CSV et XML et s'intègre aux projets .NET via un package NuGet.

NPOIpour le soutien aux projets hérités

NPOI prend en charge les formats XLS et XLSX, mais avec une API plus complexe :

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
IWorkbook workbook = new XSSFWorkbook();
ISheet worksheet = workbook.CreateSheet("Products");
IRow headerRow = worksheet.CreateRow(0);
headerRow.CreateCell(0).SetCellValue("Product");
headerRow.CreateCell(1).SetCellValue("Price");
IRow dataRow = worksheet.CreateRow(1);
dataRow.CreateCell(0).SetCellValue("Widget");
dataRow.CreateCell(1).SetCellValue(9.99);
using (FileStream file = new FileStream("products.xlsx", FileMode.Create))
{
    workbook.Write(file);
}
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
IWorkbook workbook = new XSSFWorkbook();
ISheet worksheet = workbook.CreateSheet("Products");
IRow headerRow = worksheet.CreateRow(0);
headerRow.CreateCell(0).SetCellValue("Product");
headerRow.CreateCell(1).SetCellValue("Price");
IRow dataRow = worksheet.CreateRow(1);
dataRow.CreateCell(0).SetCellValue("Widget");
dataRow.CreateCell(1).SetCellValue(9.99);
using (FileStream file = new FileStream("products.xlsx", FileMode.Create))
{
    workbook.Write(file);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Créer des fichiers Excel en C# à l'aide de la comparaison Interop : IronXLet les bibliothèques alternatives : Image 4 - Sortie NPOI

NPOI permet de créer des feuilles de calcul et des classeurs Excel par programmation, prenant en charge plusieurs formats de fichiers, notamment les fichiers CSV, XLSX et XLS. Cependant, son héritage Java rend l'API moins intuitive que d'autres bibliothèques Excel C#.

Facteurs clés de décision

Quand choisir IronXL

IronXL excelle dans les applications d'entreprise nécessitant une prise en charge multiplateforme des bibliothèques Excel, des fonctionnalités Excel complètes et un support professionnel. Son API intuitive réduit le temps de développement lorsque vous devez créer des fichiers Excel sans avoir installé Office, tandis que ses performances robustes gèrent efficacement les grands ensembles de données. Son moteur de formules intégré et sa prise en charge de plusieurs formats (XLS, XLSX, CSV, TSV) le rendent polyvalent pour répondre à divers besoins commerciaux.

Considérations alternatives

EPPlus fonctionne bien pour les projets utilisant déjà la version 4.5.3 ou antérieure (dernière version gratuite) ou ceux disposant de licences commerciales EPPlusexistantes. ClosedXMLconvient aux projets open source ayant des besoins de base en matière de tableur et aucune exigence en matière de graphiques. NPOIreste pertinent lorsque la prise en charge de XLS est essentielle et que les coûts de licence doivent être minimisés.

À titre de comparaison avec d'autres solutions commerciales : GemBox.Spreadsheet offre des fonctionnalités similaires à IronXLà un prix compétitif, tandis qu'Aspose.Cells propose des fonctionnalités étendues à un prix premium. Cependant, la combinaison de fonctionnalités, de performances et de support d'IronXL offre souvent le meilleur rapport qualité-prix pour les projets .NET de manipulation Excel.

Migration d'Interop vers IronXL

La migration d'Excel Interop vers IronXLsuit un schéma simple. Pour des conseils détaillés, consultez la documentation IronXL et explorez les exemples de code :

  1. Supprimez les références COM - Remplacez les références Microsoft.Office.Interop.Excel par IronXL
  2. Simplifier la création d'objets - Remplacer la hiérarchie Application/Workbook/Worksheet par la création directe de WorkBook
  3. Update cell access - Convert from Cells[row, col] to worksheet["A1"] notation
  4. Supprimer le code de nettoyage - Éliminer les appels Marshal.ReleaseComObject
  5. Tests multiplateformes : vérification des fonctionnalités sur les plateformes de déploiement cibles

Pour les migrations complexes impliquant des graphiques Excel ou un formatage conditionnel, IronXLfournit une assistance complète.

Comprendre les limites

Il est important de noter que les PIA (Primary Interop Assemblies) ne peuvent pas fonctionner sans Excel installé—ce sont simplement des interfaces vers des objets COM qui nécessitent l'application Office proprement dite. Cette idée fausse conduit souvent à des échecs de déploiement lors du déplacement d'applications vers des serveurs ou lors de tentatives d'automatisation Excel sans installation d'Office.

En matière de sécurité, IronXLfait l'objet d'audits de sécurité réguliers et maintient sa certification DigiCert, offrant une protection de niveau entreprise sans les vulnérabilités associées aux interfaces COM. Pour des informations détaillées sur la sécurité, consultez la documentation sur la sécurité d'IronXL.

Conclusion

Si Excel Interopa rempli son rôle dans les applications de bureau, le développement moderne exige des alternatives plus flexibles à la bibliothèque Excel. IronXLoffre l'alternative la plus complète pour la création de fichiers Excel sans Interop, alliant facilité d'utilisation, fonctionnalités d'entreprise et prise en charge multiplateforme d'Excel.

Que vous créiez des applications cloud, travailliez avec des conteneurs Docker ou développiez des solutions multiplateformes, le choix d'une bibliothèque ne nécessitant pas l'installation d'Excel est crucial pour créer des applications évolutives et faciles à maintenir. Téléchargez IronXL.Excel pour transformer dès aujourd'hui votre flux de travail d'automatisation d'Excel.

Commencez à utiliser IronXL dans votre projet aujourd'hui avec un essai gratuit.

Première étape :
green arrow pointer

Veuillez noterEPPlus, ClosedXML, NPOI, GemBoxet Asposesont des marques déposées de leurs propriétaires respectifs. Ce site n'est pas affilié à EPPlus, ClosedXML, NPOI, GemBoxou Aspose, ni approuvé par eux, ni parrainé par eux. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont faites à titre d'information uniquement et reflètent les informations publiquement disponibles au moment de la rédaction.

Questions Fréquemment Posées

Qu'est-ce qu'Excel Interop et pourquoi aurais-je besoin d'une alternative ?

Excel Interop est une bibliothèque Microsoft utilisée pour manipuler des fichiers Excel au sein d'une application C#. Des alternatives peuvent être nécessaires pour améliorer les performances, faciliter le déploiement ou éviter les dépendances avec les installations Microsoft Office.

Comment IronXL se compare-t-il à Excel Interop pour la création de feuilles de calcul ?

IronXL offre une alternative plus légère et plus rapide à Excel Interop, avec un déploiement plus facile et sans nécessité d'installation de Microsoft Office. Il prend en charge un large éventail de fonctionnalités, notamment la création, la lecture et la modification de fichiers Excel directement à partir de C#.

Quelles sont les options de licence pour IronXL par rapport à Excel Interop ?

IronXL propose des options de licence flexibles adaptées à différentes échelles de projets, alors qu'Excel Interop est lié à la licence Microsoft Office, qui peut ne pas convenir à tous les déploiements d'applications.

IronXL peut-il fonctionner sans Microsoft Office installé ?

Oui, IronXL ne nécessite pas l'installation de Microsoft Office sur le serveur ou les machines clientes, ce qui le rend idéal pour les applications côté serveur et cloud.

IronXL prend-il en charge l'exportation de fichiers Excel vers d'autres formats ?

IronXL prend en charge l'exportation de fichiers Excel vers des formats tels que CSV, TSV, JSON, et plus encore, offrant une polyvalence dans la façon dont les données peuvent être partagées et utilisées.

Est-il possible de lire et d'éditer de gros fichiers Excel avec IronXL.Excel ?

Oui, IronXL est optimisé pour traiter efficacement les fichiers Excel volumineux, offrant des temps de traitement rapides et un haut niveau de performance.

Quels sont les exemples de codage disponibles pour travailler avec IronXL ?

IronXL fournit une documentation complète et des exemples de code pour divers cas d'utilisation, notamment la création, la lecture et l'édition de fichiers Excel à l'aide de C#.

Existe-t-il des fonctionnalités spécifiques qu'IronXL offre et qu'Excel Interop n'offre pas ?

IronXL offre des fonctionnalités telles que la génération de fichiers à partir de modèles, le stylisme avancé et la possibilité de travailler avec des fichiers Excel sans avoir besoin d'installer Office, qui ne sont pas disponibles avec Excel Interop.

Est-il facile d'intégrer IronXL dans des projets C# existants ?

IronXL est conçu pour une intégration facile dans les projets C# existants avec une API simple et une assistance complète, réduisant ainsi la complexité du code nécessaire pour gérer les fichiers Excel.

Quelle est l'assistance disponible pour les développeurs qui utilisent IronXL ?

IronXL propose une assistance technique dédiée, une documentation détaillée et un forum communautaire pour aider les développeurs à résoudre rapidement les problèmes qu'ils rencontrent.

Jordi Bardia
Ingénieur logiciel
Jordi est le plus compétent en Python, C# et C++, et lorsqu'il ne met pas à profit ses compétences chez Iron Software, il programme des jeux. Partageant les responsabilités des tests de produit, du développement de produit et de la recherche, Jordi apporte une immense valeur à l'amé...
Lire la suite