Passer au contenu du pied de page
UTILISATION D'IRONXL

Lire un fichier Excel à l'aide de Microsoft Office Interop Excel C# : Et un moyen plus rapide de créer des fichiers Excel sans Office

Si vous avez déjà essayé de lire un fichier Excel en utilisant Microsoft Interopérabilité de bureau Excel C#, vous connaissez déjà la frustration : incompatibilités de versions, fuites d'objets COM et l'exigence stricte que Microsoft Office soit installé sur chaque machine exécutant votre code. Dans cet article, nous allons vous présenter l'approche interop traditionnelle, expliquer ses limites, puis vous montrer comment IronXL vous permet de créer , lire et écrire des fichiers Excel sans aucun de ces problèmes.

Commencez avec IronXL maintenant.
green arrow pointer

Comment la bibliothèque Interop crée-t-elle un classeur Excel ?

L'espace de noms Microsoft.Office.Interop.Excel expose le même modèle d'objet COM qu'Excel utilise en interne. Pour lire ou créer des fichiers Excel via cette bibliothèque d'interopérabilité, vous devez d'abord instancier un objet Application, ajouter un nouveau classeur à sa collection Workbooks, puis accéder aux cellules individuelles de la feuille de calcul. L'exemple suivant illustre une application console minimale utilisant Microsoft.Office.Interop.Excel pour créer un fichier XLSX et écrire des valeurs dans des cellules.

using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
// Create the Excel Application COM object
Excel.Application excelApp = new Excel.Application();
if (excelApp == null)
{
    Console.WriteLine("Error: Excel is not properly installed.");
    return;
}
// Add a new workbook and access the default worksheet
Excel.Workbook xlWorkBook = excelApp.Workbooks.Add(Type.Missing);
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.ActiveSheet;
// Write data into specific cells
xlWorkSheet.Cells[1, 1] = "Product";
xlWorkSheet.Cells[1, 2] = "Price";
xlWorkSheet.Cells[2, 1] = "Widget";
xlWorkSheet.Cells[2, 2] = "29.99";
// Save as an XLSX file and clean up COM objects
string filepath = @"C:\Reports\products.xlsx";
xlWorkBook.SaveAs(filepath);
xlWorkBook.Close(false);
excelApp.Quit();
// Release every COM object to prevent orphaned Excel processes
Marshal.ReleaseComObject(xlWorkSheet);
Marshal.ReleaseComObject(xlWorkBook);
Marshal.ReleaseComObject(excelApp);
using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
// Create the Excel Application COM object
Excel.Application excelApp = new Excel.Application();
if (excelApp == null)
{
    Console.WriteLine("Error: Excel is not properly installed.");
    return;
}
// Add a new workbook and access the default worksheet
Excel.Workbook xlWorkBook = excelApp.Workbooks.Add(Type.Missing);
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.ActiveSheet;
// Write data into specific cells
xlWorkSheet.Cells[1, 1] = "Product";
xlWorkSheet.Cells[1, 2] = "Price";
xlWorkSheet.Cells[2, 1] = "Widget";
xlWorkSheet.Cells[2, 2] = "29.99";
// Save as an XLSX file and clean up COM objects
string filepath = @"C:\Reports\products.xlsx";
xlWorkBook.SaveAs(filepath);
xlWorkBook.Close(false);
excelApp.Quit();
// Release every COM object to prevent orphaned Excel processes
Marshal.ReleaseComObject(xlWorkSheet);
Marshal.ReleaseComObject(xlWorkBook);
Marshal.ReleaseComObject(excelApp);
Imports Excel = Microsoft.Office.Interop.Excel
Imports System.Runtime.InteropServices

' Create the Excel Application COM object
Dim excelApp As Excel.Application = New Excel.Application()
If excelApp Is Nothing Then
    Console.WriteLine("Error: Excel is not properly installed.")
    Return
End If

' Add a new workbook and access the default worksheet
Dim xlWorkBook As Excel.Workbook = excelApp.Workbooks.Add(Type.Missing)
Dim xlWorkSheet As Excel.Worksheet = CType(xlWorkBook.ActiveSheet, Excel.Worksheet)

' Write data into specific cells
xlWorkSheet.Cells(1, 1) = "Product"
xlWorkSheet.Cells(1, 2) = "Price"
xlWorkSheet.Cells(2, 1) = "Widget"
xlWorkSheet.Cells(2, 2) = "29.99"

' Save as an XLSX file and clean up COM objects
Dim filepath As String = "C:\Reports\products.xlsx"
xlWorkBook.SaveAs(filepath)
xlWorkBook.Close(False)
excelApp.Quit()

' Release every COM object to prevent orphaned Excel processes
Marshal.ReleaseComObject(xlWorkSheet)
Marshal.ReleaseComObject(xlWorkBook)
Marshal.ReleaseComObject(excelApp)
$vbLabelText   $csharpLabel

Le code ci-dessus crée un classeur Excel , remplit une feuille de calcul avec des valeurs de lignes et de cellules, enregistre le fichier, puis libère manuellement chaque objet COM. Ce nettoyage final n'est pas facultatif ; si vous le sautez, vous découvrirez des processus EXCEL.EXE fantômes consommant de la mémoire sur votre système. Notez également que le code vérifie si l'objet Application est nul ; Si Microsoft Office n'est pas installé, chaque ligne suivante générera une erreur. La version de la bibliothèque d'interopérabilité Office doit correspondre à la version d'Office installée sur la machine, sinon vous rencontrerez des erreurs FileNotFoundException et autres erreurs d'exécution similaires, notoirement difficiles à déboguer.

Les développeurs Visual Basic rencontrent les mêmes difficultés lorsqu'ils utilisent Excel Microsoft.Office.Interop.Excel, car l'infrastructure COM sous-jacente est identique dans tous les langages .NET .

Quels problèmes l'approche d'interopérabilité engendre-t-elle sur les serveurs et dans le cloud ?

Microsoft déconseille explicitement l'utilisation d'Office Interop sur les environnements serveur. La bibliothèque d'interopérabilité lance une instance complète de l'application Excel en arrière-plan, ce qui signifie que chaque requête sur un serveur web ou une application cloud lance un processus Windows caché sur le bureau. Sur un serveur Linux, cela ne fonctionnera pas du tout. Les chaînes de connexion aux bases de données, les chemins d'accès au système de fichiers et les autorisations des utilisateurs deviennent autant de points de défaillance supplémentaires lorsque Office n'est pas installé ou lorsque différentes versions de Microsoft Office entrent en conflit.

Les développeurs publient fréquemment des messages à ce sujet sur Stack Overflow et Microsoft Q&A , à la recherche de moyens de lire et de créer des fichiers Excel sans avoir Excel installé. Le tableau ci-dessous résume les principales différences.

| Fonction | Interopérabilité de bureau | IronXL| | ---| ---| ---| | Nécessite l'installation d'Excel | Oui, uniquement la machine du développeur et chaque serveur de production | Non | | Formats de fichiers Excel pris en charge | XLS, XLSX| XLS, XLSX, CSV, TSV, JSON, XML| | Multiplateforme (.NET Core, Linux, macOS) | Windows uniquement| Windows, Linux, macOS, Azure| | Nettoyage des objets COM requis | Oui — manuel Marshal.ReleaseComObject | Non | | Déploiement serveur/cloud | Non recommandé par Microsoft | Entièrement pris en charge| | Performance| Plus lent — lance un processus Excel caché | Performances améliorées — code .NET managé | | Prise en charge de .NET Framework et de .NET Core | .NET Framework uniquement | .NET Framework, .NET Core, .NET 5–10 |

Comment créer des fichiers Excel sans avoir Microsoft Office installé ?

IronXL est une bibliothèque Excel .NET qui lit, écrit et crée des fichiers Excel entièrement en code managé. Aucune dépendance à Microsoft Office, aucun objet COM à publier et aucun conflit de versions à déboguer. Installez-le via NuGet dans Visual Studio en utilisant l'Explorateur de solutions, recherchez IronXl.Excel, et vous êtes prêt à l'utiliser. Il fonctionne parfaitement avec .NET Framework 4.6.2+, .NET Core et .NET 5 à .NET 10 sur tous les principaux systèmes d'exploitation.

using IronXL;
// Create a new Excel workbook — default value is XLSX format
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add a worksheet and populate cells with data
WorkSheet workSheet = workBook.CreateWorkSheet("Sales");
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Price";
workSheet["A2"].Value = "Widget";
workSheet["B2"].Value = 29.99;
// Apply basic formatting
workSheet["A1"].Style.Font.Bold = true;
workSheet["B1"].Style.Font.Bold = true;
// Save the XLSX file
workBook.SaveAs(@"C:\Reports\products.xlsx");
using IronXL;
// Create a new Excel workbook — default value is XLSX format
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add a worksheet and populate cells with data
WorkSheet workSheet = workBook.CreateWorkSheet("Sales");
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Price";
workSheet["A2"].Value = "Widget";
workSheet["B2"].Value = 29.99;
// Apply basic formatting
workSheet["A1"].Style.Font.Bold = true;
workSheet["B1"].Style.Font.Bold = true;
// Save the XLSX file
workBook.SaveAs(@"C:\Reports\products.xlsx");
Imports IronXL

' Create a new Excel workbook — default value is XLSX format
Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
' Add a worksheet and populate cells with data
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("Sales")
workSheet("A1").Value = "Product"
workSheet("B1").Value = "Price"
workSheet("A2").Value = "Widget"
workSheet("B2").Value = 29.99
' Apply basic formatting
workSheet("A1").Style.Font.Bold = True
workSheet("B1").Style.Font.Bold = True
' Save the XLSX file
workBook.SaveAs("C:\Reports\products.xlsx")
$vbLabelText   $csharpLabel

Fichier Excel créé avec IronXL

Lire un fichier Excel à l'aide de Microsoft Interopérabilité de bureau Excel C# : Et un moyen plus rapide de créer des fichiers Excel sans Office : Image 1 - Fichier de sortie IronXL

Le code ci-dessus permet d'obtenir le même résultat que l'exemple Interop, mais en deux fois moins de lignes et sans aucune dépendance externe. WorkBook.Create() initialise un nouveau classeur au format de fichier Excel spécifié (XLSX par défaut), et CreateWorkSheet ajoute une feuille de calcul nommée. Les valeurs des cellules sont définies via une syntaxe d'indexation claire, et SaveAs gère automatiquement l'extension du fichier. Pas de Quit(), pas de Marshal.ReleaseComObject, pas de processus caché. La même API prend également en charge l'enregistrement aux formats XLS, CSV, JSON ou XML en un seul appel de méthode ; consultez la documentation d'exportation pour connaître toutes les options disponibles.

IronXL s'intègre également parfaitement aux objets System.Data, de sorte que les données provenant des chaînes de connexion à la base de données et transitant par une DataTable peuvent être écrites directement dans une feuille de calcul sans itération manuelle ligne par ligne.

Comment lire et écrire des données dans une feuille de calcul, ligne par ligne et cellule ?

La lecture des fichiers Excel existants est tout aussi simple. La méthode WorkBook.Load accepte un chemin d'accès (sous forme de chaîne de caractères) vers un fichier XLS, XLSXou CSV. Chaque feuille de calcul expose ensuite ses lignes et ses cellules sous forme de collections itérables, ce qui simplifie la lecture des données, la modification des valeurs et le chargement des résultats vers une base de données ou un serveur.

using IronXL;
// Load an existing Excel file
WorkBook workBook = WorkBook.Load(@"C:\Reports\products.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Read and display each row of data
foreach (var row in workSheet.Rows)
{
    foreach (var cell in row.ToArray())
    {
        Console.Write(cell.Value + "\t");
    }
    Console.WriteLine();
}
// Update a specific cell and save
workSheet["B2"].Value = 34.99;
workBook.SaveAs(@"C:\Reports\products_updated.xlsx");
using IronXL;
// Load an existing Excel file
WorkBook workBook = WorkBook.Load(@"C:\Reports\products.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Read and display each row of data
foreach (var row in workSheet.Rows)
{
    foreach (var cell in row.ToArray())
    {
        Console.Write(cell.Value + "\t");
    }
    Console.WriteLine();
}
// Update a specific cell and save
workSheet["B2"].Value = 34.99;
workBook.SaveAs(@"C:\Reports\products_updated.xlsx");
Imports IronXL

' Load an existing Excel file
Dim workBook As WorkBook = WorkBook.Load("C:\Reports\products.xlsx")
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet

' Read and display each row of data
For Each row In workSheet.Rows
    For Each cell In row.ToArray()
        Console.Write(cell.Value & vbTab)
    Next
    Console.WriteLine()
Next

' Update a specific cell and save
workSheet("B2").Value = 34.99
workBook.SaveAs("C:\Reports\products_updated.xlsx")
$vbLabelText   $csharpLabel

Lecture d'un fichier Excel avec IronXL

Lire un fichier Excel à l'aide de Microsoft Interopérabilité de bureau Excel C# : Et un moyen plus rapide de créer des fichiers Excel sans Office : Image 2 - Lire la sortie d'un fichier excel avec IronXL

Cet exemple montre comment lire des fichiers Excel en parcourant la collection Rows et en accédant à la propriété Value de chaque cellule. Le modèle de boucle imbriquée — var row suivi de var cell — reflète la façon dont vous penseriez naturellement à une feuille de calcul. Après la lecture des données, le code met à jour une seule cellule et enregistre le classeur dans un nouveau fichier XLSX, en préservant l'original. IronXLrecalcule automatiquement toutes les formules Excel lorsqu'une feuille est modifiée, une fonctionnalité également offerte par la bibliothèque d'interopérabilité, mais qui nécessite le lancement d'une instance Excel complète.

Pour les scénarios plus avancés tels que les formules, la mise en forme conditionnelle, la fusion de cellules ou le travail avec plusieurs feuilles, la documentation de l'API IronXL couvre toutes les méthodes et propriétés disponibles. La bibliothèque prend également en charge l'accès depuis les contrôleurs ASP.NET , ce qui simplifie la génération et le téléchargement de fichiers Excel à partir d'une application Web ou d'un point de terminaison API sans nécessiter l'installation d'Office sur le serveur.

Quelle est la meilleure voie à suivre pour l'automatisation d'Excel .NET ?

Si un projet est lié à un environnement de bureau Windows ancien où Microsoft Office est déjà installé et dont la version restera stable, la bibliothèque d'interopérabilité peut parfaitement fonctionner pour les tâches de base. Mais pour tout le reste – déploiements de serveurs, applications cloud, compilations multiplateformes ou tout autre scénario où vous souhaitez de meilleures performances et moins d'erreurs d'exécution – une bibliothèque Excel .NET autonome est le choix évident.

IronXL gère toutes les opérations Excel courantes ( création de classeurs , lecture de données de feuilles de calcul Excel, écriture dans les cellules, enregistrement sur plusieurs types d'extension de fichier, y compris XLS et XLSX) grâce à une API propre et moderne qui s'exécute partout où .NET s'exécute. Il prend en charge les projets C# et Visual Basic, et le même code fonctionne sous Windows, Linux et macOS sans modification.

Démarrez un essai gratuit de 30 jours pour le tester dans votre propre projet, ou explorez les options de licence lorsque vous serez prêt à le déployer.

Questions Fréquemment Posées

Quelles sont les limites de l'utilisation de Microsoft Office Interop Excel en C# ?

L'utilisation de Microsoft Office Interop Excel en C# peut entraîner des problèmes tels que des décalages de version, des fuites d'objets COM et la nécessité d'avoir Microsoft Office installé sur chaque machine exécutant le code.

Comment IronXL améliore-t-il le processus de traitement des fichiers Excel en C# ?

IronXL vous permet de créer, lire et écrire des fichiers Excel sans avoir besoin de Microsoft Office, en éliminant les problèmes tels que les décalages de version et les fuites d'objets COM.

IronXL peut-il être utilisé sur un serveur où Microsoft Office n'est pas installé ?

Oui, IronXL est sûr pour le serveur et ne nécessite pas l'installation de Microsoft Office, ce qui en fait une solution multiplateforme pour le traitement des fichiers Excel.

Quels sont les avantages d'utiliser IronXL par rapport à Excel Interop ?

IronXL offre un moyen plus fiable et plus efficace de traiter les fichiers Excel, car il ne s'appuie pas sur Microsoft Office, ce qui réduit le risque de problèmes courants tels que les décalages de version et les fuites d'objets COM.

IronXL est-il compatible avec toutes les versions de fichiers Excel ?

IronXL prend en charge un large éventail de formats de fichiers Excel, notamment XLSX, XLS, CSV et TSV, ce qui le rend polyvalent pour diverses opérations sur les fichiers Excel.

IronXL nécessite-t-il une configuration particulière pour fonctionner sur une machine ?

IronXL ne nécessite pas l'installation de Microsoft Office et peut être facilement intégré dans vos projets C# sans configuration particulière.

IronXL peut-il gérer de grands fichiers Excel efficacement?

Oui, IronXL est conçu pour lire et écrire efficacement de grands fichiers Excel, offrant des performances rapides sans les limites de l'interopérabilité.

Quelles sont les plateformes prises en charge par IronXL ?

IronXL est multiplateforme, prenant en charge Windows, Linux et MacOS, ce qui en fait un choix flexible pour la manipulation de fichiers Excel dans différents environnements.

Comment IronXL gère-t-il la création de fichiers Excel ?

IronXL fournit une API simple pour créer des fichiers Excel de manière programmatique en C#, offrant des fonctionnalités de formatage des cellules, de gestion des feuilles de calcul, et plus encore.

Existe-t-il une communauté ou une assistance pour les utilisateurs d'IronXL ?

Oui, les utilisateurs d'IronXL peuvent accéder à la documentation, aux tutoriels et à l'assistance de la communauté pour répondre à toutes les questions d'intégration ou d'utilisation.

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

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi