Lire des fichiers Excel dans ASP.NET MVC en utilisant C# avec 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 des fichiers Excel directement en C# sans dépendances Microsoft Office, en 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, choisissez sa première feuille de calcul et convertissez-la en System.Data.DataTable à l'aide d'IronXL - pas d'Interop, pas de tracas.

Nuget IconCommencez dès maintenant à créer des PDF avec NuGet :

  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 grâce à 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 d'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 DataTable d'IronXL, ce qui vous permet 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 les étapes suivantes 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 qu'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". En outre, essayez d'ajouter utilisant IronXL; en haut de votre fichier de contrôleur - IntelliSense devrait reconnaître l'espace de noms immédiatement. 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 à l'aide de la méthode Load d'IronXL. 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 de manière transparente aux vues Razor et fournit un support intégré pour l'itération à travers 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 les DataSet et DataTable vers Excel si nécessaire.

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 de multiples 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 dans un navigateur web le DataTable renvoyé dans l'exemple précédent.

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 index.cshtml (vue de l'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 comme modèle l' DataTable renvoyé par la méthode Index . Chaque ligne du tableau est imprimée sur la page web à l'aide d'une boucle @for , incluant 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 au thème sombre, facile à lire. Pour un formatage Excel plus avancé comme les bordures et l'alignement des cellules ou les motifs et les 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 de 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 permet d'afficher les en-têtes de colonne appropriés tels que "Nom du client", "Frais d'expédition" et "Prix unitaire" à partir de votre fichier Excel. Pour les scénarios plus complexes impliquant des plages nommées ou des tableaux nommés, IronXL fournit 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 gestionnaire de paquets 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
Prêt à commencer?
Nuget Téléchargements 1,802,965 | Version : 2025.12 vient de sortir