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 | De $799 | 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);
Imports Excel = Microsoft.Office.Interop.Excel
' Create Excel application instance
Dim excelApp As New Excel.Application()
Dim workbook As Excel.Workbook = excelApp.Workbooks.Add()
Dim worksheet As Excel.Worksheet = CType(workbook.Sheets(1), Excel.Worksheet)
' 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)
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");
Imports IronXL
' Create workbook without Excel
Dim workbook As WorkBook = WorkBook.Create()
Dim worksheet As 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")

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. Apprenez-en davantage sur la création de fichiers Excel avec IronXL ou explorez les formules et les calculs Excel .
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"));
}
Imports OfficeOpenXml
' Set license context (required from v5+)
ExcelPackage.License.SetNonCommercialPersonal("Test")
Using package As New ExcelPackage()
Dim 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"))
End Using

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");
}
Imports ClosedXML.Excel
Using workbook As New XLWorkbook()
Dim 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")
End Using

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);
}
Imports NPOI.SS.UserModel
Imports NPOI.XSSF.UserModel
Imports System.IO
Dim workbook As IWorkbook = New XSSFWorkbook()
Dim worksheet As ISheet = workbook.CreateSheet("Products")
Dim headerRow As IRow = worksheet.CreateRow(0)
headerRow.CreateCell(0).SetCellValue("Product")
headerRow.CreateCell(1).SetCellValue("Price")
Dim dataRow As IRow = worksheet.CreateRow(1)
dataRow.CreateCell(0).SetCellValue("Widget")
dataRow.CreateCell(1).SetCellValue(9.99)
Using file As FileStream = New FileStream("products.xlsx", FileMode.Create)
workbook.Write(file)
End Using

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 obtenir des instructions détaillées, consultez la documentation d'IronXL et explorez les exemples de code :
- Supprimez les références COM - Remplacez les références Microsoft.Office.Interop.Excel par IronXL
- Simplifier la création d'objets - Remplacer la hiérarchie
Worksheetpar une création directeWorkBook - Mise à jour de l'accès aux cellules - Conversion de la notation
Cells[row, col]à la notationworksheet["A1"] - Supprimer le code de nettoyage - Éliminer les appels
Marshal.ReleaseComObject - 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 , IronXLoffre une prise en charge 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 obtenir des informations détaillées sur la sécurité, consultez la documentation de 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 pour transformer dès aujourd'hui votre flux de travail d'automatisation Excel.
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.



