Passer au contenu du pied de page
UTILISATION D'IRONXL

Comment lire des fichiers Excel en C# avec IronXL

La lecture de fichiers Excel dans les applications C# est une exigence récurrente pour les logiciels d'entreprise, les pipelines de traitement de données et les systèmes de reporting. Les approches traditionnelles utilisant Microsoft Office Interop nécessitent l'installation d'Excel sur chaque serveur ou poste de travail, créant ainsi des dépendances fragiles qui compliquent le déploiement et la gestion des licences. IronXL supprime entièrement cette dépendance : votre application lit les formats XLSX, XLS, CSV et autres formats de tableur sans qu'Office soit installé dans l'environnement.

Ce tutoriel vous guide à travers toutes les techniques nécessaires : installation de la bibliothèque, chargement des classeurs, extraction des valeurs de cellules saisies, itération sur les lignes et les colonnes, exécution de calculs agrégés et création d'un lecteur complet de données d'employés. Tous les exemples utilisent C# avec des instructions de niveau supérieur ciblant .NET 10.


Comment installer IronXL pour le traitement Excel ?

Ouvrez la console du gestionnaire de packages NuGet dans Visual Studio et exécutez la commande suivante pour ajouter IronXL à votre projet. Sinon, si vous préférez travailler à partir d'un terminal, utilisez la commande .NET CLI affichée sur la deuxième ligne :

Install-Package IronXl.Excel
dotnet add package IronXl.Excel
Install-Package IronXl.Excel
dotnet add package IronXl.Excel
SHELL

Le package s'installe en quelques secondes et ajoute une seule référence d'assembly géré à votre projet. Aucune inscription COM, aucun assembly d'interopérabilité principal Office et aucune dépendance Excel spécifique à une version à gérer.

Après l'installation, ajoutez la directive using en haut de chaque fichier qui utilise des données de type tableur :

using IronXL;
using IronXL;
$vbLabelText   $csharpLabel

Cet espace de noms unique vous donne accès à WorkBook, WorkSheet, aux plages de cellules, aux propriétés de valeurs typées, aux fonctions d'agrégation et à tous les autres types IronXL . La page NuGet Gallery pour IronXl.Excel répertorie toutes les versions disponibles et leur arbre de dépendances complet.


Quels formats de fichiers Excel IronXL prend-il en charge ?

Comprendre les formats que votre application doit gérer influence à la fois les appels d'API que vous effectuez et les décisions de stockage adoptées par votre projet.

XLSX — le format par défaut depuis Excel 2007 — est une archive ZIP de fichiers XML. Il prend en charge plus d'un million de lignes, une mise en forme riche, les tableaux croisés dynamiques et les plages nommées. La plupart des pipelines de données modernes produisent une sortie XLSX, c'est donc le format que vous rencontrerez le plus souvent.

XLS est l'ancien format binaire utilisé par Excel 2003 et les versions antérieures. Certains systèmes d'entreprise exportent encore au format XLS ; il est donc important de disposer d'une prise en charge fiable de ce format lors de l'intégration avec des infrastructures plus anciennes. IronXL lit les fichiers XLS sans aucune configuration particulière de votre part.

XLSM étend XLSX en y ajoutant la prise en charge des macros. IronXL lit les données de la feuille de calcul à partir des fichiers XLSM même s'il n'exécute pas le code VBA intégré, ce qui est le comportement correct pour l'extraction de données côté serveur.

Les formats CSV et TSV sont des formats tabulaires en texte brut largement utilisés pour l'échange de données entre systèmes. WorkBook.LoadCSV gère les fichiers séparés par des virgules, et IronXL renvoie le même objet WorkBook que votre code sait déjà comment parcourir, gardant ainsi votre logique de lecture de données uniforme quel que soit le format source.

IronXL détecte automatiquement le format de fichier à partir de l'extension de fichier lorsque vous appelez WorkBook.Load. Dans la plupart des cas, il n'est pas nécessaire de spécifier explicitement le format, ce qui simplifie le code devant gérer des entrées provenant de sources multiples.

Formats de fichiers Excel pris en charge par IronXL
Format Extension Méthode Load Remarques
Cahier d'exercices Open XML .xlsx WorkBook.Load Format moderne par défaut
Binaire hérité .xls WorkBook.Load Excel 2003 et versions antérieures
Activé par macro .xlsm WorkBook.Load Données lues ; macros non exécutées
Séparés par des virgules .csv WorkBook.LoadCSV Analyseur CSV optimisé
Séparé par des tabulations .tsv WorkBook.Load variante de délimiteur de tabulation

Comment charger et lire un classeur Excel ?

La méthode WorkBook.Load est le point d'entrée de toutes les opérations basées sur les fichiers. Indiquez le chemin d'accès au fichier et IronXL renvoie un objet classeur entièrement rempli que vous pouvez interroger immédiatement :

using IronXL;

// Load the workbook; format is detected automatically
WorkBook workbook = WorkBook.Load("Employees.xlsx");

// Access the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read a single cell by A1 address
string companyName = sheet["A1"].StringValue;
Console.WriteLine($"Company: {companyName}");

// Access sheets by name or by zero-based index
WorkSheet byName  = workbook.GetWorkSheet("Sales");
WorkSheet byIndex = workbook.WorkSheets[1];

// Load a password-protected file
WorkBook secured = WorkBook.Load("Confidential.xlsx", "p@ssw0rd");
using IronXL;

// Load the workbook; format is detected automatically
WorkBook workbook = WorkBook.Load("Employees.xlsx");

// Access the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read a single cell by A1 address
string companyName = sheet["A1"].StringValue;
Console.WriteLine($"Company: {companyName}");

// Access sheets by name or by zero-based index
WorkSheet byName  = workbook.GetWorkSheet("Sales");
WorkSheet byIndex = workbook.WorkSheets[1];

// Load a password-protected file
WorkBook secured = WorkBook.Load("Confidential.xlsx", "p@ssw0rd");
$vbLabelText   $csharpLabel

La propriété DefaultWorkSheet renvoie la première feuille, couvrant la majorité des fichiers à feuille unique. Lorsque votre fichier contient plusieurs feuilles, GetWorkSheet récupère par nom et WorkSheets[n] récupère par index à partir de zéro. La documentation de référence de l'API WorkBook recense chaque surcharge et propriété de l'objet classeur.

VB .NET Lecture de fichiers Excel avec IronXL: Guide pas à pas sans Microsoft Office : Image 1 - Installation

Entrée

VB .NET Lecture de fichiers Excel avec IronXL: Guide pas à pas sans Microsoft Office : Image 2 - Exemple d'entrée Excel

Sortie

VB .NET Lecture de fichiers Excel avec IronXL: Guide pas à pas sans Microsoft Office : Image 3 - Sortie console


Comment lire les valeurs saisies dans les cellules Excel ?

Chaque cellule d' IronXL expose des propriétés typées qui renvoient des valeurs dans le type de données exact dont vous avez besoin – aucun traitement ou conversion manuel n'est requis. Les propriétés typées gèrent automatiquement la conversion à partir de la représentation de cellule sous-jacente :

using IronXL;

WorkBook workbook = WorkBook.Load("Employees.xlsx");
WorkSheet sheet   = workbook.DefaultWorkSheet;

// Extract typed values from row 2
int      employeeId = sheet["A2"].IntValue;
string   name       = sheet["B2"].StringValue;
string   department = sheet["C2"].StringValue;
decimal  salary     = sheet["D2"].DecimalValue;
DateTime hireDate   = sheet["E2"].DateTimeValue;

Console.WriteLine($"ID:         {employeeId}");
Console.WriteLine($"Name:       {name}");
Console.WriteLine($"Department: {department}");
Console.WriteLine($"Salary:     {salary:C}");
Console.WriteLine($"Hired:      {hireDate:d}");

// Use the Text property for the formatted display value
string formattedSalary = sheet["D2"].Text;   // "$75,000.00"
string formattedDate   = sheet["E2"].Text;   // "28/02/2026"

// Guard against empty cells before reading
if (!sheet["B3"].IsEmpty)
{
    string value = sheet["B3"].StringValue;
}
using IronXL;

WorkBook workbook = WorkBook.Load("Employees.xlsx");
WorkSheet sheet   = workbook.DefaultWorkSheet;

// Extract typed values from row 2
int      employeeId = sheet["A2"].IntValue;
string   name       = sheet["B2"].StringValue;
string   department = sheet["C2"].StringValue;
decimal  salary     = sheet["D2"].DecimalValue;
DateTime hireDate   = sheet["E2"].DateTimeValue;

Console.WriteLine($"ID:         {employeeId}");
Console.WriteLine($"Name:       {name}");
Console.WriteLine($"Department: {department}");
Console.WriteLine($"Salary:     {salary:C}");
Console.WriteLine($"Hired:      {hireDate:d}");

// Use the Text property for the formatted display value
string formattedSalary = sheet["D2"].Text;   // "$75,000.00"
string formattedDate   = sheet["E2"].Text;   // "28/02/2026"

// Guard against empty cells before reading
if (!sheet["B3"].IsEmpty)
{
    string value = sheet["B3"].StringValue;
}
$vbLabelText   $csharpLabel

La propriété Text renvoie la valeur d'affichage exactement telle que formatée dans Excel -- utile lorsque vous avez besoin de la chaîne numérique formatée plutôt que de la valeur numérique brute. Pour les cellules contenant des formules Excel , IronXL évalue l'expression et renvoie le résultat calculé via les mêmes propriétés typées. Des propriétés de valeur supplémentaires -- BoolValue, DoubleValue, FloatValue -- apparaissent dans la référence de valeur de cellule .


Comment parcourir les lignes et les colonnes d'un tableau Excel ?

Le traitement de chaque enregistrement d'un ensemble de données nécessite de parcourir les lignes et les colonnes. La syntaxe de plage d'IronXL correspond directement à la notation A1 d'Excel ; la sélection d'un bloc de cellules est donc familière à quiconque a déjà écrit des formules dans un tableur :

using IronXL;

WorkBook workbook = WorkBook.Load("Employees.xlsx");
WorkSheet sheet   = workbook.DefaultWorkSheet;

// Iterate a single column range
Console.WriteLine("Employee List:");
foreach (var cell in sheet["B2:B100"])
{
    if (!string.IsNullOrEmpty(cell.Text))
        Console.WriteLine($"  - {cell.Text}");
}

// Iterate all rows and all columns using the Rows property
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
        Console.Write(cell.Text.PadRight(15));
    Console.WriteLine();
}
using IronXL;

WorkBook workbook = WorkBook.Load("Employees.xlsx");
WorkSheet sheet   = workbook.DefaultWorkSheet;

// Iterate a single column range
Console.WriteLine("Employee List:");
foreach (var cell in sheet["B2:B100"])
{
    if (!string.IsNullOrEmpty(cell.Text))
        Console.WriteLine($"  - {cell.Text}");
}

// Iterate all rows and all columns using the Rows property
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
        Console.Write(cell.Text.PadRight(15));
    Console.WriteLine();
}
$vbLabelText   $csharpLabel

La plage sheet["B2:B100"] renvoie une collection énumérable d'objets de cellule. La vérification de string.IsNullOrEmpty ignore gracieusement les lignes vides. La propriété Rows -- documentée dans le guide de plage de données de la feuille de calcul -- parcourt la feuille ligne par ligne et expose les cellules de chaque ligne sans vous obliger à connaître à l'avance le nombre de colonnes.

Sortie

VB .NET Lecture de fichiers Excel avec IronXL: Guide pas à pas sans Microsoft Office : Image 4 - Sortie des lignes Excel


Comment effectuer des calculs agrégés sur des données Excel ?

IronXL inclut des fonctions d'agrégation intégrées qui calculent les résultats directement sur les plages de cellules ; aucune boucle d'accumulation manuelle n'est requise :

using IronXL;

WorkBook workbook = WorkBook.Load("Employees.xlsx");
WorkSheet sheet   = workbook.DefaultWorkSheet;

// Built-in aggregate methods work on any named range
decimal total   = sheet["D2:D200"].Sum();
decimal highest = sheet["D2:D200"].Max();
decimal lowest  = sheet["D2:D200"].Min();
decimal average = sheet["D2:D200"].Avg();

Console.WriteLine($"Total Payroll:  {total:C}");
Console.WriteLine($"Highest Salary: {highest:C}");
Console.WriteLine($"Lowest Salary:  {lowest:C}");
Console.WriteLine($"Average Salary: {average:C}");

// Combine with LINQ for filtered aggregation
decimal itTotal = sheet["D2:D200"]
    .Where(c => sheet[$"C{c.RowIndex}"].StringValue == "IT")
    .Sum(c => c.DecimalValue);
Console.WriteLine($"IT Department Total: {itTotal:C}");
using IronXL;

WorkBook workbook = WorkBook.Load("Employees.xlsx");
WorkSheet sheet   = workbook.DefaultWorkSheet;

// Built-in aggregate methods work on any named range
decimal total   = sheet["D2:D200"].Sum();
decimal highest = sheet["D2:D200"].Max();
decimal lowest  = sheet["D2:D200"].Min();
decimal average = sheet["D2:D200"].Avg();

Console.WriteLine($"Total Payroll:  {total:C}");
Console.WriteLine($"Highest Salary: {highest:C}");
Console.WriteLine($"Lowest Salary:  {lowest:C}");
Console.WriteLine($"Average Salary: {average:C}");

// Combine with LINQ for filtered aggregation
decimal itTotal = sheet["D2:D200"]
    .Where(c => sheet[$"C{c.RowIndex}"].StringValue == "IT")
    .Sum(c => c.DecimalValue);
Console.WriteLine($"IT Department Total: {itTotal:C}");
$vbLabelText   $csharpLabel

Sum, Min, Max et Avg ignorent automatiquement les cellules vides et gèrent la conversion numérique en arrière-plan. Enchaîner des requêtes LINQ sur la plage vous permet d'obtenir des agrégats filtrés (sous-totaux par département, sommes par plage de dates et décomptes conditionnels), le tout sans quitter l'API IronXL .


Comment créer un outil complet de lecture des données des employés ?

L'exemple suivant rassemble tous les éléments abordés jusqu'à présent dans une application console prête pour la production qui charge une feuille de calcul des employés, formate chaque enregistrement, cumule les totaux des salaires, gère les écritures et intercepte les erreurs avec élégance :

using IronXL;

try
{
    WorkBook workbook = WorkBook.Load("Employees.xlsx");
    WorkSheet sheet   = workbook.DefaultWorkSheet;

    Console.WriteLine("=== Employee Data Report ===\n");

    int     rowNumber     = 2;
    decimal totalSalary   = 0m;
    int     employeeCount = 0;

    while (!string.IsNullOrEmpty(sheet[$"A{rowNumber}"].StringValue))
    {
        int      id         = sheet[$"A{rowNumber}"].IntValue;
        string   name       = sheet[$"B{rowNumber}"].StringValue;
        string   department = sheet[$"C{rowNumber}"].StringValue;
        decimal  salary     = sheet[$"D{rowNumber}"].DecimalValue;

        Console.WriteLine($"{id,4}  {name,-20}  {department,-15}  {salary,10:C}");

        totalSalary   += salary;
        employeeCount += 1;
        rowNumber     += 1;
    }

    Console.WriteLine($"\nTotal Employees: {employeeCount}");
    Console.WriteLine($"Total Payroll:   {totalSalary:C}");

    // Write a new record back to the sheet and save
    sheet["A10"].Value = 1010;
    sheet["B10"].Value = "Jane Doe";
    sheet["C10"].Value = "Finance";
    sheet["D10"].Value = 75000;
    workbook.SaveAs("Employees-Updated.xlsx");
}
catch (Exception ex)
{
    Console.WriteLine($"Error reading Excel file: {ex.Message}");
}
using IronXL;

try
{
    WorkBook workbook = WorkBook.Load("Employees.xlsx");
    WorkSheet sheet   = workbook.DefaultWorkSheet;

    Console.WriteLine("=== Employee Data Report ===\n");

    int     rowNumber     = 2;
    decimal totalSalary   = 0m;
    int     employeeCount = 0;

    while (!string.IsNullOrEmpty(sheet[$"A{rowNumber}"].StringValue))
    {
        int      id         = sheet[$"A{rowNumber}"].IntValue;
        string   name       = sheet[$"B{rowNumber}"].StringValue;
        string   department = sheet[$"C{rowNumber}"].StringValue;
        decimal  salary     = sheet[$"D{rowNumber}"].DecimalValue;

        Console.WriteLine($"{id,4}  {name,-20}  {department,-15}  {salary,10:C}");

        totalSalary   += salary;
        employeeCount += 1;
        rowNumber     += 1;
    }

    Console.WriteLine($"\nTotal Employees: {employeeCount}");
    Console.WriteLine($"Total Payroll:   {totalSalary:C}");

    // Write a new record back to the sheet and save
    sheet["A10"].Value = 1010;
    sheet["B10"].Value = "Jane Doe";
    sheet["C10"].Value = "Finance";
    sheet["D10"].Value = 75000;
    workbook.SaveAs("Employees-Updated.xlsx");
}
catch (Exception ex)
{
    Console.WriteLine($"Error reading Excel file: {ex.Message}");
}
$vbLabelText   $csharpLabel

La boucle while se termine lorsque la colonne A devient vide, ce qui rend le lecteur adaptable aux feuilles de calcul de toute longueur sans nécessiter un nombre de lignes codé en dur. L'écriture des valeurs suit la même syntaxe d'adresse de cellule que la lecture, et SaveAs enregistre les modifications dans un nouveau fichier afin que l'original reste intact. Le bloc try/catch gère les fichiers manquants, les classeurs verrouillés et les données corrompues - autant de scénarios qui se produisent dans les environnements de production où les fichiers d'entrée proviennent de sources externes.

Sortie

VB .NET Lecture de fichiers Excel avec IronXL: Guide pas à pas sans Microsoft Office : Image 5 - Exportation des données des employés

Le guide pratique pour la création de feuilles de calcul et le guide pour la conversion de fichiers XLSX en CSV montrent comment combiner la lecture et l'écriture dans des flux de travail de bout en bout. Le guide de style des cellules couvre les tailles de police, les couleurs et les bordures lorsque la mise en forme de la sortie est requise.

VB .NET Lecture de fichiers Excel avec IronXL: Guide pas à pas sans Microsoft Office : Image 6 - Sortie Windows Forms


Comment gérez-vous les scénarios de lecture avancée ?

Plusieurs scénarios moins courants mais importants se présentent dans les projets réels. Les plages nommées, la découverte des feuilles de calcul et le chargement CSV bénéficient chacun d'une prise en charge API dédiée.

Les plages nommées vous permettent de référencer des données par une étiquette logique plutôt que par une adresse de cellule. Si l'auteur du classeur a défini une plage nommée appelée SalaryTable, vous y accédez directement via GetRangeByName :

var range = workbook.GetRangeByName("SalaryTable");
decimal total = range.Sum();
Console.WriteLine($"Named range total: {total:C}");
var range = workbook.GetRangeByName("SalaryTable");
decimal total = range.Sum();
Console.WriteLine($"Named range total: {total:C}");
$vbLabelText   $csharpLabel

La fonction de recherche de feuilles de calcul énumère chaque feuille du classeur, ce qui est utile lors du traitement de fichiers comportant un nombre variable d'onglets :

foreach (WorkSheet ws in workbook.WorkSheets)
    Console.WriteLine($"Sheet: {ws.Name}, Rows: {ws.RowCount}");
foreach (WorkSheet ws in workbook.WorkSheets)
    Console.WriteLine($"Sheet: {ws.Name}, Rows: {ws.RowCount}");
$vbLabelText   $csharpLabel

Le chargement CSV utilise une méthode dédiée optimisée pour les fichiers texte brut, renvoyant un WorkSheet que vous parcourez avec la même API de plage :

WorkBook csv    = WorkBook.LoadCSV("data.csv");
WorkSheet first = csv.DefaultWorkSheet;
Console.WriteLine(first["A1"].StringValue);
WorkBook csv    = WorkBook.LoadCSV("data.csv");
WorkSheet first = csv.DefaultWorkSheet;
Console.WriteLine(first["A1"].StringValue);
$vbLabelText   $csharpLabel

Ces modèles couvrent les scénarios de lecture avancés qui apparaissent dans les projets de migration de données, les pipelines ETL et les systèmes de reporting automatisés. Pour une description complète de l'API, consultez la documentation de référence des objets IronXL .

Références faisant autorité supplémentaires :


Quelles sont vos prochaines étapes ?

IronXL transforme la lecture de fichiers Excel, qui représentait un défi d'interopérabilité complexe en raison de nombreuses dépendances, en quelques lignes de code C# simple. Le chargement des classeurs, l'extraction des valeurs typées, l'itération ligne par ligne, l'exécution des calculs agrégés et la gestion des cas limites suivent tous le même modèle d'API cohérent, sans que Microsoft Office soit installé dans votre environnement de déploiement.

Pour passer du tutoriel à la production :

  1. Commencez un essai gratuit pour débloquer toutes les fonctionnalités IronXL et les valider avec vos propres fichiers Excel avant de souscrire une licence.
  2. Consultez la documentation complète IronXL pour obtenir des guides sur la rédaction, la mise en forme, le style et la conversion des feuilles de calcul.
  3. Explorez la documentation de référence et l'API complète pour découvrir chaque classe, méthode et propriété disponible dans la bibliothèque.
  4. Consultez le guide pratique de création de feuilles de calcul lorsque votre flux de travail nécessite la génération de fichiers de sortie ainsi que la lecture de fichiers d'entrée.
  5. Consultez l' index des articles du blog IronXL pour des tutoriels supplémentaires couvrant des scénarios concrets tels que la génération de rapports, la validation des données et la consolidation de plusieurs feuilles.

Questions Fréquemment Posées

Qu'est-ce qu'IronXL?

IronXL est une bibliothèque .NET qui permet aux développeurs de lire, d'éditer et de créer des fichiers Excel dans différents formats tels que XLSX et XLS sans avoir besoin d'installer Microsoft Office.

Comment lire des fichiers Excel en C# avec IronXL?

Appelez WorkBook.Load avec le chemin d'accès au fichier pour ouvrir le classeur, puis accédez aux cellules en utilisant la notation A1 et les propriétés typées telles que StringValue, IntValue et DecimalValue.

Pourquoi choisir IronXL plutôt que Microsoft Office Interop pour la lecture des fichiers Excel ?

IronXL ne nécessite aucune installation de Microsoft Office, éliminant ainsi les dépendances COM et simplifiant le déploiement côté serveur.

Quels formats de fichiers Excel IronXL peut-il lire ?

IronXL lit les formats XLSX, XLS, XLSM, CSV et TSV. La détection du format est automatique et basée sur l'extension du fichier.

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

Oui, IronXL est optimisé pour la performance et peut gérer de gros fichiers Excel, ce qui le rend adapté aux applications gourmandes en données.

IronXL est-il compatible avec .NET 10 ?

Oui, IronXL prend en charge les versions modernes de .NET , y compris .NET 10, ainsi que les projets .NET Framework .

Comment effectuer des calculs agrégés avec IronXL?

Utilisez les fonctions intégrées Somme, Minimum, Maximum et Moyenne sur n'importe quelle plage de cellules. Ces fonctions ignorent automatiquement les cellules vides.

IronXL peut-il lire les fichiers Excel protégés par mot de passe ?

Oui, transmettez le mot de passe comme deuxième argument à WorkBook.Load : WorkBook.Load("file.xlsx", "password").

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

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me