Read Excel Files in ASP.NET MVC Using C# with IronXL

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronXL permet aux développeurs ASP.NET MVC de lire directement des fichiers Excel en C# sans dépendance à Microsoft Office, convertissant les données Excel en System.Data.DataTable pour un affichage facile dans les vues Web avec seulement quelques lignes de code.

Démarrage rapide : Charger et convertir une feuille Excel en DataTable dans MVC

Cet exemple montre comment démarrer en quelques secondes : chargez un classeur Excel, sélectionnez sa première feuille de calcul et convertissez-la en System.Data.DataTable à l'aide IronXL — sans interopérabilité, sans tracas.

  1. Installez IronXL avec le Gestionnaire de Packages NuGet

    PM > Install-Package IronXl.Excel
  2. Copiez et exécutez cet extrait de code.

    var dataTable = IronXl.WorkBook.Load("CustomerData.xlsx").DefaultWorkSheet.ToDataTable(true);
  3. Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronXL dans votre projet dès aujourd'hui avec un essai gratuit

    arrow pointer

Comment créer un projet ASP.NET pour la lecture d'Excel ?

Pourquoi Visual Studio 2022 est-il le plus adapté ?

À l'aide de Visual Studio 2022, créez un nouveau projet ASP.NET. Visual Studio 2022 offre une excellente prise en charge des frameworks .NET 6+, une IntelliSense améliorée pour les méthodes IronXL et de meilleures performances lors de l'utilisation de fichiers Excel volumineux. L'intégration NuGet de l'IDE rend l'installation de IronXL particulièrement simple.

Quel modèle de projet dois-je choisir ?

Pour la lecture de fichiers Excel en ASP.NET, choisissez le modèle "ASP.NET Core Web App (Model-View-Controller)". Ce modèle offre une structure MVC propre qui sépare le traitement des données (lecture d'Excel) de la logique de présentation. Le modèle MVC fonctionne parfaitement avec la conversion IronXL de DataTable, vous permettant de charger des feuilles de calcul dans les contrôleurs et de les afficher dans les vues de manière transparente.

Quelle est la version de .NET recommandée?

IronXL fonctionne avec .NET Framework 4.6.2+ et .NET Core 3.1+. Pour les nouveaux projets ASP.NET MVC, utilisez .NET 6.0 ou une version plus récente pour des performances et une sécurité optimales. Ces versions offrent une meilleure gestion de la mémoire lors du traitement de fichiers Excel volumineux et une meilleure prise en charge asynchrone/attente pour la conversion des types de fichiers de feuilles de calcul.

Comment installer la bibliothèque IronXL?

Quelle est la configuration requise pour l'installation?


Quelle est la méthode d'installation la plus rapide ?

Après avoir créé le nouveau projet, installez la bibliothèque IronXL. Suivez ces étapes pour installer IronXL. Ouvrez la console du gestionnaire de packages NuGet et exécutez la commande suivante :

Install-Package IronXl.Excel

Comment puis-je vérifier l'installation ?

Pour vérifier que IronXL est correctement installé, vérifiez les dépendances de votre projet dans l'explorateur de solutions. Vous devriez voir "IronXL" listé sous "Dependencies > Packages". De plus, essayez d'ajouter using IronXL; en haut de votre fichier de contrôleur - IntelliSense devrait reconnaître immédiatement l'espace de noms. Pour résoudre les problèmes d'installation, consultez le guide des licences.

Comment lire un fichier Excel dans mon contrôleur?

Quel est le code contenu dans l'action du contrôleur ?

Ouvrez le contrôleur par défaut de votre projet ASP.NET (par exemple, HomeController.cs) et remplacez la méthode Index par le code suivant :

using IronXL;
using System.Data;

public ActionResult Index()
{
    // Load the Excel workbook from a specified path.
    WorkBook workBook = WorkBook.Load(@"C:\Files\Customer Data.xlsx");

    // Access the first worksheet from the workbook.
    WorkSheet workSheet = workBook.WorkSheets.First();

    // Convert the worksheet data to a DataTable object.
    // The 'true' parameter uses the first row as column headers
    var dataTable = workSheet.ToDataTable(true);

    // Send the DataTable to the view for rendering.
    return View(dataTable);
}
using IronXL;
using System.Data;

public ActionResult Index()
{
    // Load the Excel workbook from a specified path.
    WorkBook workBook = WorkBook.Load(@"C:\Files\Customer Data.xlsx");

    // Access the first worksheet from the workbook.
    WorkSheet workSheet = workBook.WorkSheets.First();

    // Convert the worksheet data to a DataTable object.
    // The 'true' parameter uses the first row as column headers
    var dataTable = workSheet.ToDataTable(true);

    // Send the DataTable to the view for rendering.
    return View(dataTable);
}
$vbLabelText   $csharpLabel

Pourquoi utiliser DataTable plutôt que d'autres formats ?

Dans la méthode d'action Index, chargez le fichier Excel en utilisant la méthode IronXL de Load. Le chemin d'accès au fichier Excel (y compris le nom du fichier) est fourni en tant que paramètre à l'appel de méthode. Ensuite, sélectionnez la première feuille Excel comme feuille de travail et chargez les données qu'elle contient dans un objet DataTable. Enfin, envoyez le DataTable au frontend.

DataTable est idéal pour ASP.NET MVC car il s'intègre parfaitement aux vues Razor et fournit une prise en charge intégrée pour l'itération sur les lignes et les colonnes. Contrairement aux objets personnalisés, DataTable ne nécessite pas de mappage de modèle et gère automatiquement les types de données mixtes. Vous pouvez également exporter DataSet et DataTable vers Excel en cas de besoin.

Qu'en est-il de la gestion des erreurs pour les fichiers manquants ?

Une gestion robuste des erreurs garantit que votre application ne se bloque pas lorsque des fichiers Excel sont manquants ou corrompus. Voici une version améliorée avec une gestion correcte des exceptions :

public ActionResult Index()
{
    try
    {
        string filePath = @"C:\Files\Customer Data.xlsx";

        // Check if file exists before attempting to load
        if (!System.IO.File.Exists(filePath))
        {
            ViewBag.Error = "Excel file not found at specified location.";
            return View(new DataTable());
        }

        // Load workbook with error handling
        WorkBook workBook = WorkBook.Load(filePath);

        // Verify worksheet exists
        if (workBook.WorkSheets.Count == 0)
        {
            ViewBag.Error = "No worksheets found in the Excel file.";
            return View(new DataTable());
        }

        WorkSheet workSheet = workBook.WorkSheets.First();
        var dataTable = workSheet.ToDataTable(true);

        return View(dataTable);
    }
    catch (Exception ex)
    {
        // Log the exception (consider using a logging framework)
        ViewBag.Error = $"Error reading Excel file: {ex.Message}";
        return View(new DataTable());
    }
}
public ActionResult Index()
{
    try
    {
        string filePath = @"C:\Files\Customer Data.xlsx";

        // Check if file exists before attempting to load
        if (!System.IO.File.Exists(filePath))
        {
            ViewBag.Error = "Excel file not found at specified location.";
            return View(new DataTable());
        }

        // Load workbook with error handling
        WorkBook workBook = WorkBook.Load(filePath);

        // Verify worksheet exists
        if (workBook.WorkSheets.Count == 0)
        {
            ViewBag.Error = "No worksheets found in the Excel file.";
            return View(new DataTable());
        }

        WorkSheet workSheet = workBook.WorkSheets.First();
        var dataTable = workSheet.ToDataTable(true);

        return View(dataTable);
    }
    catch (Exception ex)
    {
        // Log the exception (consider using a logging framework)
        ViewBag.Error = $"Error reading Excel file: {ex.Message}";
        return View(new DataTable());
    }
}
$vbLabelText   $csharpLabel

Comment puis-je sélectionner différentes feuilles de calcul ?

IronXL offre plusieurs façons de sélectionner et de travailler avec des feuilles de calcul spécifiques . Vous pouvez accéder aux feuilles de calcul par index ou par nom, ou parcourir toutes les feuilles disponibles :

// Method 1: Select by worksheet name
WorkSheet namedSheet = workBook.GetWorkSheet("Sales Data");

// Method 2: Select by index (zero-based)
WorkSheet secondSheet = workBook.WorkSheets[1];

// Method 3: Select the default/active worksheet
WorkSheet defaultSheet = workBook.DefaultWorkSheet;

// Method 4: Iterate through all worksheets
foreach (WorkSheet sheet in workBook.WorkSheets)
{
    string sheetName = sheet.Name;
    // Process each worksheet
}
// Method 1: Select by worksheet name
WorkSheet namedSheet = workBook.GetWorkSheet("Sales Data");

// Method 2: Select by index (zero-based)
WorkSheet secondSheet = workBook.WorkSheets[1];

// Method 3: Select the default/active worksheet
WorkSheet defaultSheet = workBook.DefaultWorkSheet;

// Method 4: Iterate through all worksheets
foreach (WorkSheet sheet in workBook.WorkSheets)
{
    string sheetName = sheet.Name;
    // Process each worksheet
}
$vbLabelText   $csharpLabel

Comment afficher des données Excel sur une page web?

Quel est le code d'affichage requis ?

L'exemple suivant montre comment afficher le code DataTable renvoyé dans l'exemple précédent dans un navigateur Web.

Le fichier Excel utilisé dans cet exemple est présenté ci-dessous :

Excel spreadsheet with customer names, shipping costs, and unit prices - sample data for web display tutorial

*fichier Excel*

Ouvrez le fichier index.cshtml (vue index) et remplacez le code par le code HTML suivant :

@{
    ViewData["Title"] = "Home Page";
}

@using System.Data
@model DataTable

<div class="text-center">
    <h1 class="display-4">Welcome to IronXL Read Excel MVC</h1>
</div>

@* Check for errors first *@
@if (ViewBag.Error != null)
{
    <div class="alert alert-danger">
        @ViewBag.Error
    </div>
}

@* Display table only if data exists *@
@if (Model != null && Model.Rows.Count > 0)
{
    <table class="table table-dark">
        <tbody>
            @foreach (DataRow row in Model.Rows)
            {
                <tr>
                    @for (int i = 0; i < Model.Columns.Count; i++)
                    {
                        <td>@row[i]</td>
                    }
                </tr>
            }
        </tbody>
    </table>
}
else
{
    <p>No data to display.</p>
}
@{
    ViewData["Title"] = "Home Page";
}

@using System.Data
@model DataTable

<div class="text-center">
    <h1 class="display-4">Welcome to IronXL Read Excel MVC</h1>
</div>

@* Check for errors first *@
@if (ViewBag.Error != null)
{
    <div class="alert alert-danger">
        @ViewBag.Error
    </div>
}

@* Display table only if data exists *@
@if (Model != null && Model.Rows.Count > 0)
{
    <table class="table table-dark">
        <tbody>
            @foreach (DataRow row in Model.Rows)
            {
                <tr>
                    @for (int i = 0; i < Model.Columns.Count; i++)
                    {
                        <td>@row[i]</td>
                    }
                </tr>
            }
        </tbody>
    </table>
}
else
{
    <p>No data to display.</p>
}
$vbLabelText   $csharpLabel

Pourquoi utiliser Bootstrap pour l'habillage des tableaux ?

Le code ci-dessus utilise le DataTable renvoyé par la méthode Index comme modèle. Chaque ligne du tableau est imprimée sur la page web à l'aide d'une boucle @for, y compris la mise en forme Bootstrap pour la décoration.

Bootstrap permet de concevoir des tableaux réactifs qui s'adaptent automatiquement aux différentes tailles d'écran, ce qui est essentiel pour les applications web modernes. La classe table-dark crée un tableau attrayant à thème sombre et facile à lire. Pour une mise en forme Excel plus avancée, comme les bordures et l'alignement des cellules ou les motifs et couleurs d'arrière-plan , IronXL fournit des méthodes supplémentaires pour accéder directement aux données structurées.

À quoi ressemble le résultat final?

L'exécution du projet produit les résultats ci-dessous :

Bootstrap table displaying Excel customer data with names, shipping costs, and unit prices in ASP.NET MVC application

*Tableau Bootstrap*

Comment ajouter des en-têtes au tableau ?

Pour afficher les en-têtes de colonne de votre fichier Excel, modifiez le code d'affichage afin d'inclure une section d'en-tête de tableau. Lors de l'appel à ToDataTable(true), IronXL utilise automatiquement la première ligne comme noms de colonnes :

@if (Model != null && Model.Rows.Count > 0)
{
    <table class="table table-dark">
        <thead>
            <tr>
                @foreach (DataColumn column in Model.Columns)
                {
                    <th>@column.ColumnName</th>
                }
            </tr>
        </thead>
        <tbody>
            @foreach (DataRow row in Model.Rows)
            {
                <tr>
                    @for (int i = 0; i < Model.Columns.Count; i++)
                    {
                        <td>@row[i]</td>
                    }
                </tr>
            }
        </tbody>
    </table>
}
@if (Model != null && Model.Rows.Count > 0)
{
    <table class="table table-dark">
        <thead>
            <tr>
                @foreach (DataColumn column in Model.Columns)
                {
                    <th>@column.ColumnName</th>
                }
            </tr>
        </thead>
        <tbody>
            @foreach (DataRow row in Model.Rows)
            {
                <tr>
                    @for (int i = 0; i < Model.Columns.Count; i++)
                    {
                        <td>@row[i]</td>
                    }
                </tr>
            }
        </tbody>
    </table>
}
$vbLabelText   $csharpLabel

Cette amélioration affiche correctement les en-têtes de colonnes, tels que " Nom du client ", " Frais de livraison " et " Prix unitaire ", à partir de votre fichier Excel. Pour les scénarios plus complexes impliquant des plages ou des tableaux nommés , IronXL propose des méthodes supplémentaires pour accéder directement aux données structurées.

Questions Fréquemment Posées

Comment lire des fichiers Excel en ASP.NET MVC sans Microsoft Office ?

IronXL vous permet de lire des fichiers Excel directement en C# sans aucune dépendance vis-à-vis de Microsoft Office. Il suffit d'installer IronXL via NuGet, puis d'utiliser WorkBook.Load() pour ouvrir votre fichier Excel et le convertir en DataTable en une seule ligne de code : var dataTable = IronXl.WorkBook.Load('CustomerData.xlsx').DefaultWorkSheet.ToDataTable(true) ;

Quel est le moyen le plus rapide de convertir des données Excel en tableau de données en ASP.NET ?

IronXL fournit la méthode ToDataTable() qui convertit instantanément les feuilles de calcul Excel en objets System.Data.DataTable. Après avoir chargé votre classeur avec IronXL, accédez à n'importe quelle feuille de calcul et appelez ToDataTable(true) pour inclure les en-têtes. Cette conversion ne nécessite qu'une seule ligne de code et fonctionne de manière transparente avec les vues ASP.NET MVC.

Quelle version de .NET dois-je utiliser pour le traitement des fichiers Excel dans les applications web ?

IronXL prend en charge .NET Framework 4.6.2+ et .NET Core 3.1+. Pour les nouveaux projets ASP.NET MVC, il est recommandé d'utiliser .NET 6.0 ou une version plus récente, car elle offre une meilleure gestion de la mémoire lors du traitement de fichiers Excel volumineux avec IronXL et une meilleure prise en charge asynchrone/attente pour les opérations sur les feuilles de calcul.

Quel modèle de projet Visual Studio fonctionne le mieux pour la fonctionnalité de lecture d'Excel ?

Choisissez le modèle " ASP.NET Core Web App (modèle-vue-contrôleur) " lors de la création de votre projet. Cette structure MVC complète parfaitement la fonctionnalité de conversion DataTable d'IronXL, vous permettant de charger et de traiter les fichiers Excel dans les contrôleurs tout en affichant proprement les données dans les vues.

Comment installer la bibliothèque de lecture Excel dans mon projet ASP.NET ?

Installez IronXL via la console du Package Manager NuGet en exécutant "Install-Package IronXl.Excel". Après l'installation, vérifiez qu'il a été correctement ajouté en vérifiant les dépendances de votre projet et en ajoutant " using IronXL ; " à votre contrôleur - IntelliSense devrait reconnaître l'espace de noms immédiatement.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/ready_to_started_202509.php
Line: 12
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 489
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/ready_to_started_202509.php
Line: 19
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 489
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

Prêt à commencer?
Nuget Téléchargements 1,890,100 | Version : 2026.3 vient de sortir

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/still_scrolling_202512.php
Line: 17
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 71
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/still_scrolling_202512.php
Line: 24
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 71
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ? PM > Install-Package IronXl.Excel
exécuter un échantillon regarder vos données devenir une feuille de calcul.