Passer au contenu du pied de page
UTILISATION D'IRONXL

Comment créer des fichiers Excel en C# : Interop vs IronXL

Introduction

La création de fichiers Excel par programmation est une exigence fondamentale dans de nombreuses applications C#. Alors que Microsoft.Office.Interop.L'approche traditionnelle pour créer des fichiers Excel en C# à l'aide d'Interop a été Excel. Cependant, elle présente des limitations, comme la nécessité d'installer Microsoft Excel et la dépendance aux assemblages d'interopérabilité principaux. Des alternatives modernes à Excel, comme IronXL, 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 et propose des exemples de code ainsi que des conseils pour les développeurs .NET.

Aperçu rapide de la comparaison

Caractéristique

Interop Excel

IronXL

EPPlus

ClosedXML

NPOI

GemBox

Aspose

Installation d'Excel requise

Oui

Non

Non

Non

Non

Non

Non

Déploiement de serveur

Nonn recommandé

Oui

Oui

Oui

Oui

Oui

Oui

support de la plateforme

Windows uniquement

Multiplateforme

Multiplateforme

Multiplateforme

Multiplateforme

Multiplateforme

Multiplateforme

Prise en charge XLS

Oui

Oui

Non

Non

Oui

Oui

Oui

Assistance XLSX

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Courbe d'apprentissage

Raide

Facile

Facile

Facile

Modéré

Facile

Modéré

Licence commerciale

Licence de bureau

À partir de $liteLicense

À partir de 449 €

Gratuit (MIT)

Gratuit (Apache)

À partir de 590 €

À partir de 999 $

Efficacité de la mémoire

Pauvre

Excellent

Bien

Bien

Pauvre

Excellent

Bien

Remarque : " Interop Excel " nécessite l'installation de Microsoft Excel ainsi que de l'assembly d'interopérabilité principal. Des bibliothèques alternatives, telles qu'IronXL, vous 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 plusieurs feuilles de calcul.

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

Les alternatives à Microsoft.Office.Interop.Excel sont essentielles car Interop Excel nécessite l'installation de Microsoft Excel sur chaque machine où votre application s'exécute. 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 Interop Excel :

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 IronXL se compare-t-il ?

IronXL élimine ces complications grâce à une API moderne et intuitive pour l'automatisation 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

Comment créer des fichiers Excel en C# : Interop vs IronXL : Figure 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 le package NuGet, vous pouvez l'ajouter directement à votre projet Visual Studio sans avoir à installer Microsoft Office. Il n'est pas nécessaire de gérer manuellement l'objet application Excel ni de libérer les objets COM, ce qui réduit le risque d'exceptions ou de messages d'avertissement. Apprenez-en davantage sur la création de fichiers Excel avec IronXL ou explorez les formules et les 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.SetNonnCommercialPersonal("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.SetNonnCommercialPersonal("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

Comment créer des fichiers Excel en C# : Interop vs IronXL : Figure 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 EPPlus via 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

Comment créer des fichiers Excel en C# : Interop vs IronXL : Figure 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.

NPOI pour 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

Comment créer des fichiers Excel en C# : Interop vs IronXL : Figure 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 EPPlus existantes. ClosedXML convient aux projets open source ayant des besoins de base en matière de tableur et aucune exigence en matière de graphiques. NPOI reste 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'Interop Excel vers IronXL suit un schéma simple. Pour obtenir des instructions détaillées, consultez la documentation d'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/Classeur/Feuille de calcul par la création directe de classeurs.
  3. Mise à jour de l'accès aux cellules - Conversion de la notation Cellules[ligne, colonne] en notation feuille de calcul["A1"]
  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 une mise en forme conditionnelle , IronXL offre une prise en charge complète.

Comprendre les limites

Il est important de noter que les Primary Interop Assemblies (PIA) ne peuvent pas fonctionner sans Excel installé ; ce ne sont que des interfaces avec 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é, IronXL fait 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 obtenir des informations détaillées sur la sécurité, consultez la documentation de sécurité d'IronXL .

Conclusion

Si Interop Excel a rempli son rôle dans les applications de bureau, le développement moderne exige des alternatives plus flexibles à la bibliothèque Excel. IronXL offre 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 pour transformer dès aujourd'hui votre flux de travail d'automatisation Excel.

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

Première étape :
green arrow pointer

Questions Fréquemment Posées

Quelles sont certaines des limitations de l'utilisation d'Excel Interop en C#?

Interop Excel en C# peut être limité par sa dépendance aux installations de Microsoft Excel, des problèmes de performance potentiels, et un manque de support multiplateforme. IronXL offre une alternative plus efficace et polyvalente pour la manipulation des feuilles de calcul.

Pourquoi devrais-je envisager d'utiliser IronXL plutôt qu'Excel Interop?

IronXL offre une solution plus robuste avec ses capacités multiplateformes, ses performances plus rapides, et sa consommation réduite de mémoire. Il ne nécessite pas qu'Excel soit installé sur le serveur, ce qui le rend plus adapté aux applications côté serveur.

IronXL peut-il gérer de grands ensembles de données efficacement?

Oui, IronXL est optimisé pour gérer de grands ensembles de données efficacement. Il offre de meilleures performances et gestion de la mémoire par rapport à Excel Interop, ce qui en fait un choix idéal pour traiter des données volumineuses.

IronXL est-il compatible avec .NET Core?

IronXL est entièrement compatible avec .NET Core, permettant aux développeurs de créer des applications fonctionnant sur diverses plateformes sans se fier aux installations de Microsoft Excel.

Quelles sont les options de licence pour IronXL ?

IronXL offre des options de licence flexibles, y compris des licences pour un développeur unique, pour une équipe et pour entreprise, le rendant adapté aux divers tailles de projet et budgets.

IronXL prend-il en charge l'exportation de données vers des formats Excel?

IronXL prend en charge l'exportation de données vers plusieurs formats Excel, tels que XLS, XLSX, et CSV, offrant ainsi de la flexibilité pour diverses manipulations et présentations de données.

Puis-je utiliser IronXL pour la génération automatisée de rapports Excel?

Oui, IronXL est conçu pour faciliter la génération automatisée de rapports Excel, offrant des fonctionnalités comme le filtrage de données, la création de graphiques, et le traitement de formules pour rationaliser les tâches de rapports.

Comment IronXL assure-t-il l'exactitude des données lors des opérations Excel?

IronXL assure l'exactitude des données avec ses capacités fiables de traitement de formules et de formatage de cellules, minimisant les erreurs et maintenant l'intégrité des données lors des opérations Excel.

Quels langages de programmation sont pris en charge par IronXL?

IronXL est principalement conçu pour être utilisé avec C#, mais il prend également en charge d'autres langages .NET, le rendant polyvalent pour les développeurs qui travaillent dans l'écosystème .NET.

IronXL offre-t-il un support client?

IronXL fournit un support client complet, y compris de la documentation, des tutoriels, et une assistance directe, assurant que les développeurs peuvent utiliser efficacement la bibliothèque dans leurs projets.

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