Passer au contenu du pied de page
UTILISATION D'IRONXL

Comment importer des données Excel en C# avec IronXL

Travailler avec des fichiers Microsoft Excel est une exigence quotidienne pour de nombreux développeurs .NET. Qu'il s'agisse d'importer des données clients, de traiter des rapports financiers ou de migrer des données de feuilles de calcul vers des bases de données, les développeurs ont besoin d'un moyen fiable de lire les fichiers Excel sans dépendances complexes ni nécessité d'installer Excel. Les approches traditionnelles, telles que l'automatisation COM via Microsoft.Office.Interop, nécessitent une installation complète d'Office, introduisent des restrictions de plateforme et créent des dépendances de déploiement fragiles. IronXL offre une solution simple et multiplateforme, éliminant tous ces problèmes et permettant d'effectuer des opérations Excel directement à partir de code .NET managé.

Comment importer, lire et manipuler facilement des données de fichiers MS Excel en C# avec IronXL: Image 1 - IronXL

Comment installer IronXL et commencer à importer des fichiers Excel ?

Se lancer dans l'importation d'Excel en C# ne prend que quelques minutes avec IronXL. La bibliothèque Excel prend en charge les formats XLS (anciens formats) et XLSX (formats modernes), ainsi que les formats CSV , TSV et autres formats de feuilles de calcul. Contrairement aux solutions qui reposent sur Microsoft.Office.Interop.Excel, IronXL fonctionne de manière indépendante sur n'importe quelle plateforme .NET ou .NET Core.

Comment importer, lire et manipuler facilement des données de fichiers MS Excel en C# avec IronXL: Image 2 - Multiplateforme

Installez IronXL via le gestionnaire de packages NuGet ou l'interface de ligne de commande .NET . Vous pouvez également utiliser la boîte de dialogue Gérer les packages NuGet dans Visual Studio et rechercher "IronXL" :

Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
SHELL

Comment importer, lire et manipuler facilement des données de fichiers MS Excel en C# avec IronXL: Image 3 - Installation

Pour plus de détails sur l'installation, y compris les notes de compatibilité de version et de dépendance, reportez-vous au guide d'installation NuGet IronXL . Aucune dépendance d'exécution supplémentaire ni composant Office n'est requis : le package est autonome. Une fois le logiciel installé, l'importation des données Excel est simple :

using IronXL;

// Load any Excel file
WorkBook workBook = WorkBook.Load("ProductData.xlsx");
// Access the first worksheet
WorkSheet sheet = workBook.WorkSheets[0];
// Read a cell value
string value = sheet["B1"].StringValue;
Console.WriteLine(value);
using IronXL;

// Load any Excel file
WorkBook workBook = WorkBook.Load("ProductData.xlsx");
// Access the first worksheet
WorkSheet sheet = workBook.WorkSheets[0];
// Read a cell value
string value = sheet["B1"].StringValue;
Console.WriteLine(value);
$vbLabelText   $csharpLabel

Ce code démontre le flux de travail principal : chargement d'un classeur, accès à une feuille de calcul et lecture des valeurs des cellules. La méthode WorkBook.Load() détecte automatiquement le format du fichier (XLS, XLSX ou CSV). La syntaxe intuitive de l'indexeur sheet["B1"] rend l'accès aux cellules aussi naturel que la manipulation de tableaux. Pour une référence complète des membres et surcharges disponibles, consultez la documentation de l'API IronXL .

Entrée d'exemple

Comment importer, lire et manipuler facilement des données de fichiers MS Excel en C# avec IronXL: Image 4 - Entrée Excel

Sortie

Comment importer, lire et manipuler facilement des données de fichiers MS Excel en C# avec IronXL: Image 5 - Sortie console

Comment lire des données Excel et les convertir en objets C# ?

Les applications réelles ont besoin de plus que de valeurs unicellulaires. IronXL excelle dans l'importation d'ensembles de données entiers et leur conversion en objets C# utilisables. Lorsque vous devez importer des données Excel structurées , la bibliothèque propose plusieurs approches qui correspondent directement à vos modèles de domaine.

L'exemple ci-dessous lit les lignes d'une feuille de calcul et associe chaque ligne à un objet Product saisi :

using IronXL;

// Load the Excel file
WorkBook workBook = WorkBook.Load("ProductData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// Map rows to typed objects
var products = new List<Product>();
foreach (var row in sheet.Rows)
{
    var product = new Product
    {
        Id = row.Columns[0].IntValue,
        Name = row.Columns[1].StringValue,
        Price = row.Columns[2].DecimalValue,
        IsAvailable = row.Columns[3].BoolValue
    };
    products.Add(product);
}

foreach (var product in products)
{
    Console.WriteLine(
        $"Id: {product.Id}, Name: {product.Name}, " +
        $"Price: {product.Price}, Available: {product.IsAvailable}"
    );
}
using IronXL;

// Load the Excel file
WorkBook workBook = WorkBook.Load("ProductData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// Map rows to typed objects
var products = new List<Product>();
foreach (var row in sheet.Rows)
{
    var product = new Product
    {
        Id = row.Columns[0].IntValue,
        Name = row.Columns[1].StringValue,
        Price = row.Columns[2].DecimalValue,
        IsAvailable = row.Columns[3].BoolValue
    };
    products.Add(product);
}

foreach (var product in products)
{
    Console.WriteLine(
        $"Id: {product.Id}, Name: {product.Name}, " +
        $"Price: {product.Price}, Available: {product.IsAvailable}"
    );
}
$vbLabelText   $csharpLabel

Les propriétés typées -- IntValue, StringValue, DecimalValue et BoolValue -- gèrent automatiquement la conversion de type. Cette approche élimine l'analyse manuelle et réduit les erreurs lors du traitement de colonnes de types de données mixtes. De nombreux développeurs sur Stack Overflow apprécient cette méthode sécurisée d'importation de données Excel.

Sortie

Comment importer, lire et manipuler facilement des données de fichiers MS Excel en C# avec IronXL: Image 6 - Sortie objet

Comment travaillez-vous avec les plages de cellules et LINQ ?

Pour les calculs agrégés et les requêtes filtrées, IronXL prend en charge les opérations sur les plages avec une compatibilité LINQ intégrée :

using IronXL;

WorkBook workBook = WorkBook.Load("ProductData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// Read a named cell range
Range dataRange = sheet["A1:D5"];

// Calculate aggregates directly on a range
decimal sum = sheet["C1:C5"].Sum();
Console.WriteLine($"Sum of C1:C5: {sum}");

decimal max = sheet["C1:C5"].Max(c => c.DecimalValue);
Console.WriteLine($"Max of C1:C5: {max}");

// Filter using LINQ
var highValueOrders = dataRange
    .Where(cell => cell.DecimalValue > 100)
    .Select(cell => cell.Value)
    .ToList();

Console.WriteLine("Orders above 100:");
foreach (var order in highValueOrders)
{
    Console.WriteLine(order);
}
using IronXL;

WorkBook workBook = WorkBook.Load("ProductData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// Read a named cell range
Range dataRange = sheet["A1:D5"];

// Calculate aggregates directly on a range
decimal sum = sheet["C1:C5"].Sum();
Console.WriteLine($"Sum of C1:C5: {sum}");

decimal max = sheet["C1:C5"].Max(c => c.DecimalValue);
Console.WriteLine($"Max of C1:C5: {max}");

// Filter using LINQ
var highValueOrders = dataRange
    .Where(cell => cell.DecimalValue > 100)
    .Select(cell => cell.Value)
    .ToList();

Console.WriteLine("Orders above 100:");
foreach (var order in highValueOrders)
{
    Console.WriteLine(order);
}
$vbLabelText   $csharpLabel

La classe Range offre un accès de type collection à plusieurs cellules simultanément. La compatibilité LINQ vous permet de filtrer, transformer et agréger des données Excel à l'aide de modèles C# familiers, sans conversion préalable en collections intermédiaires. Les méthodes d'agrégation intégrées, telles que Sum() et Max(), agissent directement sur les plages de cellules. Pour plus de détails sur la lecture des données d'un classeur, consultez le guide IronXL sur la lecture des fichiers Excel .

Sortie

Comment importer, lire et manipuler facilement des données de fichiers MS Excel en C# avec IronXL: Image 7 - Sortie par plage

Comment convertir un fichier Excel en DataTable en C# ?

La conversion de DataTable est essentielle pour les opérations de base de données et les scénarios de liaison de données. IronXL fournit des méthodes intégrées qui gèrent la conversion d' Excel en DataSet ou DataTable . Cette fonctionnalité est particulièrement utile lorsque vous devez importer des feuilles de calcul Excel dans SQL Server ou d'autres bases de données relationnelles. Étant donné que l'objet résultant est un System.Data.DataTable standard, il fonctionne avec n'importe quel chemin de code compatible ADO.NET sans nécessiter de modifications de votre couche d'accès aux données.

using IronXL;
using System.Data;
using System.Data.SqlClient;

// Load Excel file
WorkBook workBook = WorkBook.Load("inventory.xlsx");
// Select the first worksheet
WorkSheet sheet = workBook.WorkSheets.First();

// Convert to DataTable -- first row becomes column headers
DataTable dataTable = sheet.ToDataTable(true);

// Use SqlBulkCopy to insert directly into SQL Server
string connectionString = "Data Source=.;Initial Catalog=InventoryDB;Integrated Security=True;";
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString))
{
    bulkCopy.DestinationTableName = "Inventory";
    bulkCopy.WriteToServer(dataTable);
}
using IronXL;
using System.Data;
using System.Data.SqlClient;

// Load Excel file
WorkBook workBook = WorkBook.Load("inventory.xlsx");
// Select the first worksheet
WorkSheet sheet = workBook.WorkSheets.First();

// Convert to DataTable -- first row becomes column headers
DataTable dataTable = sheet.ToDataTable(true);

// Use SqlBulkCopy to insert directly into SQL Server
string connectionString = "Data Source=.;Initial Catalog=InventoryDB;Integrated Security=True;";
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString))
{
    bulkCopy.DestinationTableName = "Inventory";
    bulkCopy.WriteToServer(dataTable);
}
$vbLabelText   $csharpLabel

La méthode ToDataTable() accepte un paramètre booléen indiquant si la première ligne contient des en-têtes. Lorsque la valeur est définie sur true, IronXL utilise automatiquement les valeurs de la première ligne comme noms de colonnes. Le DataTable ainsi obtenu s'intègre à .NET, Entity Framework et aux contrôles de liaison de données sans aucune configuration supplémentaire.

Pour un contrôle plus précis du processus de conversion, vous pouvez créer la DataTable manuellement :

using IronXL;
using System.Data;

WorkBook workBook = WorkBook.Load("inventory.xlsx");
WorkSheet sheet = workBook.WorkSheets.First();

// Build DataTable manually for custom column types or validation
DataTable customTable = new DataTable();

for (int col = 0; col < sheet.ColumnCount; col++)
{
    customTable.Columns.Add($"Column{col + 1}", typeof(string));
}

foreach (var row in sheet.Rows)
{
    var dataRow = customTable.NewRow();
    for (int col = 0; col < sheet.ColumnCount; col++)
    {
        dataRow[col] = row.Columns[col].Value ?? DBNull.Value;
    }
    customTable.Rows.Add(dataRow);
}

// Print headers
foreach (DataColumn column in customTable.Columns)
{
    Console.Write($"{column.ColumnName}\t");
}
Console.WriteLine();

// Print data rows
foreach (DataRow row in customTable.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write($"{item}\t");
    }
    Console.WriteLine();
}
using IronXL;
using System.Data;

WorkBook workBook = WorkBook.Load("inventory.xlsx");
WorkSheet sheet = workBook.WorkSheets.First();

// Build DataTable manually for custom column types or validation
DataTable customTable = new DataTable();

for (int col = 0; col < sheet.ColumnCount; col++)
{
    customTable.Columns.Add($"Column{col + 1}", typeof(string));
}

foreach (var row in sheet.Rows)
{
    var dataRow = customTable.NewRow();
    for (int col = 0; col < sheet.ColumnCount; col++)
    {
        dataRow[col] = row.Columns[col].Value ?? DBNull.Value;
    }
    customTable.Rows.Add(dataRow);
}

// Print headers
foreach (DataColumn column in customTable.Columns)
{
    Console.Write($"{column.ColumnName}\t");
}
Console.WriteLine();

// Print data rows
foreach (DataRow row in customTable.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write($"{item}\t");
    }
    Console.WriteLine();
}
$vbLabelText   $csharpLabel

Cette approche vous offre une flexibilité totale lors de l'importation. Les valeurs nulles sont gérées avec élégance en les convertissant en DBNull.Value, assurant ainsi la compatibilité avec les contraintes des colonnes de la base de données. Pour plus d'informations sur la réécriture des données dans des fichiers, consultez le guide IronXL sur l'écriture de fichiers Excel .

Sortie

Comment importer, lire et manipuler facilement des données de fichiers MS Excel en C# avec IronXL: Image 8 - Sortie DataTable

Comment travaillez-vous avec les formules, les classeurs à plusieurs feuilles et Entity Framework ?

IronXL va au-delà de la simple lecture grâce à des fonctionnalités adaptées à des scénarios complexes du monde réel. La bibliothèque préserve les formules Excel, permettant ainsi d'évaluer les calculs de manière dynamique. Pour les développeurs travaillant avec des classeurs Excel complexes , cela permet de maintenir l'intégrité des données tout au long du processus d'importation.

Comment importer, lire et manipuler facilement des données de fichiers MS Excel en C# avec IronXL: Image 9 - Fonctionnalités

Lecture des formules et des valeurs calculées

using IronXL;

WorkBook workBook = WorkBook.Load("FinancialReport.xlsx");
WorkSheet sheet = workBook.GetWorkSheet("Reports");

// Read the evaluated result of a formula cell
decimal calculatedTotal = sheet["E10"].DecimalValue;
Console.WriteLine($"Total: {calculatedTotal}");

// Read the formula string itself
string formula = sheet["E10"].Formula;
Console.WriteLine($"Formula: {formula}"); // e.g. "=SUM(E2:E9)"
using IronXL;

WorkBook workBook = WorkBook.Load("FinancialReport.xlsx");
WorkSheet sheet = workBook.GetWorkSheet("Reports");

// Read the evaluated result of a formula cell
decimal calculatedTotal = sheet["E10"].DecimalValue;
Console.WriteLine($"Total: {calculatedTotal}");

// Read the formula string itself
string formula = sheet["E10"].Formula;
Console.WriteLine($"Formula: {formula}"); // e.g. "=SUM(E2:E9)"
$vbLabelText   $csharpLabel

La prise en charge des formules permet d'importer des fichiers Excel contenant des calculs complexes sans avoir à recréer la logique métier dans le code. La bibliothèque évalue automatiquement les formules, renvoyant les valeurs calculées tout en préservant la chaîne de caractères de la formule originale. Cela s'avère inestimable lors de l'importation de modèles financiers ou de modèles de rapports contenant des formules imbriquées.

La compatibilité multiplateforme garantit un comportement cohérent dans les environnements Windows, Linux, macOS et les conteneurs. Cela rend IronXL parfaitement adapté aux déploiements cloud et aux microservices où l'installation d'Office n'est pas possible. La documentation de la .NET Foundation souligne comment les applications .NET modernes bénéficient de l'indépendance de la plateforme.

Intégration des données Excel avec Entity Framework

L'intégration d'Entity Framework crée des pipelines directs entre Excel et la base de données. Le modèle suivant fonctionne parfaitement avec les instructions de niveau supérieur de .NET 10 :

using IronXL;

WorkBook workBook = WorkBook.Load("ProductData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// Skip the header row, map remaining rows to entity objects
var products = sheet.Rows
    .Skip(1)
    .Select(row => new Product
    {
        Name = row.Columns[0].StringValue,
        Price = row.Columns[1].DecimalValue
    })
    .ToList();

using var context = new AppDbContext();
await context.Products.AddRangeAsync(products);
await context.SaveChangesAsync();

Console.WriteLine($"Imported {products.Count} products.");
using IronXL;

WorkBook workBook = WorkBook.Load("ProductData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// Skip the header row, map remaining rows to entity objects
var products = sheet.Rows
    .Skip(1)
    .Select(row => new Product
    {
        Name = row.Columns[0].StringValue,
        Price = row.Columns[1].DecimalValue
    })
    .ToList();

using var context = new AppDbContext();
await context.Products.AddRangeAsync(products);
await context.SaveChangesAsync();

Console.WriteLine($"Imported {products.Count} products.");
$vbLabelText   $csharpLabel

Ce modèle permet une migration directe d'Excel vers une base de données avec un minimum de code, ce qui le rend parfaitement adapté aux processus ETL, aux migrations de données ponctuelles et aux tâches d'importation planifiées. Comme la projection LINQ s'exécute en mémoire avant l'enregistrement du contexte, vous pouvez appliquer une logique de validation ou de transformation simultanément. Pour créer des fichiers Excel à partir de données C#, consultez le guide IronXL sur la création de fichiers Excel .

Formats de fichiers pris en charge

IronXL prend en charge un large éventail de formats de feuilles de calcul sans nécessiter de bibliothèques supplémentaires ni d'installation d'Office. Le tableau suivant récapitule les formats pris en charge et leurs cas d'utilisation :

Formats de fichiers Excel pris en charge par IronXL
Format Extension Remarques
Classeur Excel .xlsx Format par défaut pour Excel 2007 et versions ultérieures
Classeur Excel hérité .xls Compatible avec les anciennes versions d'Excel
Valeurs séparées par des virgules .csv Données tabulaires en texte brut, largement prises en charge
Valeurs séparées par des tabulations .tsv Convient aux données contenant des virgules.
Classeur binaire Excel .xlsb Format binaire compact pour les fichiers volumineux

Pour exporter à nouveau les données dans ces formats, consultez le guide d'exportation Excel IronXL .

Comment gérez-vous la mise en forme des cellules lors de l'importation ?

Lors de l'importation de fichiers Excel, la préservation ou l'inspection de la mise en forme des cellules est souvent aussi importante que la lecture des valeurs brutes. IronXL expose les propriétés de police, de couleur, d'alignement et de bordure pour chaque cellule, ce qui vous permet d'appliquer des règles de validation ou de reproduire des styles par programmation. Ceci est particulièrement utile pour les rapports où la mise en forme visuelle a une signification sémantique, par exemple, des cellules colorées indiquant les niveaux de risque ou des lignes en gras indiquant les totaux.

Par exemple, vous pourriez vouloir vérifier si les cellules contiennent du texte en gras — un signal courant indiquant qu'une ligne est une ligne de résumé ou de total — avant de décider de l'inclure dans votre ensemble de données importé :

using IronXL;

WorkBook workBook = WorkBook.Load("StyledReport.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

foreach (var row in sheet.Rows)
{
    var firstCell = row.Columns[0];

    // Skip rows where the first cell is bold (typically header or total rows)
    if (firstCell.Style.Font.Bold)
    {
        continue;
    }

    Console.WriteLine($"Data row: {firstCell.StringValue}");
}
using IronXL;

WorkBook workBook = WorkBook.Load("StyledReport.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

foreach (var row in sheet.Rows)
{
    var firstCell = row.Columns[0];

    // Skip rows where the first cell is bold (typically header or total rows)
    if (firstCell.Style.Font.Bold)
    {
        continue;
    }

    Console.WriteLine($"Data row: {firstCell.StringValue}");
}
$vbLabelText   $csharpLabel

Pour une référence complète sur la mise en forme des cellules et des plages, y compris les chaînes de format numérique et l'accès à la couleur d'arrière-plan, consultez le guide de mise en forme des cellules IronXL . Vous pouvez également appliquer des opérations de fusion aux fichiers de sortie après traitement – ​​consultez le guide de fusion des cellules IronXL .

Comment choisir la licence IronXL adaptée à votre projet ?

IronXL propose des options de licence flexibles adaptées à l'envergure de votre projet. Une licence d'essai gratuite est disponible pour évaluation, vous donnant accès à toutes les fonctionnalités sans restriction de temps pendant le développement. La version d'essai ajoute un filigrane aux fichiers de sortie, qui est supprimé avec une licence de production valide.

Comment importer, lire et manipuler facilement des données de fichiers MS Excel en C# avec IronXL: Image 10 - Licence

Pour les équipes développant des applications de production, les licences IronXL incluent des options pour les développeurs individuels, les équipes et les déploiements à l'échelle de l'organisation. Toutes les licences de production incluent :

  • Droits de redistribution libres de redevances
  • Assistance prioritaire de l'équipe de développement IronXL
  • Accès à toutes les mises à jour, y compris les mises à jour mineures, pendant la période de licence.

Si vous évaluez IronXL en parallèle avec d'autres bibliothèques Excel, la présentation des fonctionnalités IronXL fournit une description détaillée de ce qui est inclus à chaque niveau.

Pour commencer à utiliser IronXL dans votre projet dès aujourd'hui, consultez la page produit IronXL ou commencez directement par la documentation IronXL pour obtenir des guides d'installation, des articles pratiques et des références API couvrant toutes les fonctionnalités de la bibliothèque.

Questions Fréquemment Posées

Comment importer des données Excel en C# ?

Vous pouvez utiliser IronXL pour importer facilement des données Excel en C#, sans avoir besoin que Microsoft Excel soit installé sur votre système.

Quels sont les avantages d'utiliser IronXL pour la manipulation de fichiers Excel ?

IronXL permet aux développeurs de lire, écrire et manipuler des fichiers Excel en C# sans dépendances complexes, et il fonctionne sur différentes plateformes.

Ai-je besoin d'installer Microsoft Office pour utiliser IronXL ?

Non, IronXL élimine la nécessité d'installer Microsoft Office, ce qui vous permet de travailler avec des fichiers Excel directement dans vos applications C#.

IronXL peut-il gérer les formats de fichiers XLSX et CSV ?

Oui, IronXL prend en charge divers formats de fichiers Excel, notamment XLSX et CSV, ce qui le rend polyvalent pour différents besoins de traitement de données.

IronXL est-il adapté au traitement de fichiers Excel volumineux ?

Oui, IronXL est conçu pour traiter efficacement les fichiers Excel volumineux, ce qui permet aux développeurs de traiter des ensembles de données étendus sans problème de performance.

Quelles sont les plateformes prises en charge par IronXL ?

IronXL est compatible avec plusieurs plateformes, ce qui permet le développement et le déploiement multiplateforme d'applications manipulant des fichiers Excel.

Comment IronXL simplifie-t-il la migration des données d'Excel vers les bases de données ?

IronXL fournit des méthodes simples pour lire et exporter des données à partir de feuilles Excel, ce qui facilite le transfert de données vers des bases de données sans codage complexe.

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

Oui, IronXL permet l'automatisation de la génération de rapports Excel, ce qui vous permet de créer et de manipuler par programme des fichiers Excel en C#.

IronXL convient-il à la fois aux applications à petite échelle et aux applications d'entreprise ?

IronXL est polyvalent et évolutif, ce qui le rend adapté à la fois aux projets à petite échelle et aux grandes applications de niveau entreprise nécessitant la manipulation de fichiers Excel.

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