Passer au contenu du pied de page
UTILISATION D'IRONXL

Comment importer un fichier Excel dans un GridView en ASP.NET C#

L'importation de données Excel dans un GridView en ASP.NET C# est simple avec IronXL . Vous chargez un classeur, convertissez une feuille de calcul en DataTable, et liez-la à votre contrôle GridView -- le tout sans pilotes OLEDB ni chaînes de connexion complexes.

Essayez-le vous-même : profitez d'un essai gratuit d' IronXL pour suivre les exemples de code ci-dessous.

Comment installer IronXL pour l'intégration Excel GridView ?

Avant d'écrire le moindre code, vous devez ajouter IronXL à votre projet ASP.NET . La méthode la plus rapide consiste à NuGet, soit via la console du gestionnaire de packages Visual Studio, soit via l'interface de ligne de commande .NET .

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

Une fois installé, NuGet ajoute toutes les références nécessaires à votre projet. Aucun pilote externe à installer, aucun fournisseur OLEDB à enregistrer et aucune dépendance à Microsoft Office sur le serveur. La bibliothèque est distribuée sous forme d'un seul assemblage géré et fonctionne sous Windows, Linux, macOS et dans les environnements d'hébergement cloud, notamment Azure App Service.

Après l'installation, ajoutez les espaces de noms suivants à tout fichier code-behind qui lit ou écrit des données Excel :

using IronXL;
using System.Data;
using System.IO;
using IronXL;
using System.Data;
using System.IO;
$vbLabelText   $csharpLabel

IronXL prend en charge les formats .xls (Excel 97-2003) et .xlsx (Excel 2007+), vous n'avez donc pas besoin d'un traitement séparé pour chaque type de fichier. Le même appel WorkBook.Load gère les deux formats en inspectant automatiquement la signature du fichier.

Pourquoi éviter OLEDB pour la liaison de données GridView ?

Les importations Excel traditionnelles basées sur OLEDB nécessitent le moteur de base de données Microsoft Access (ACE ou JET) , qui doit être installé sur le serveur dans la version appropriée (32 bits ou 64 bits). Le déploiement sur différents environnements serveur échoue souvent car le pilote est manquant ou incompatible, et Microsoft ne fournit plus par défaut le pilote ACE 64 bits avec Windows.

IronXL élimine complètement cette dépendance. Il lit directement le format Open XML ou BIFF brut dans le code managé. Vous bénéficiez d'un comportement prévisible en développement, en préproduction et en production, sans vous soucier des versions de pilotes.

Quelles sont les plateformes .NET ciblées par IronXL ?

IronXL cible .NET 10, .NET 8, .NET Standard 2.0 et .NET Framework 4.6.2+. Cette compatibilité signifie que vous pouvez utiliser la même bibliothèque, que votre application ASP.NET s'exécute sur Web Forms classique, ASP.NET MVC ou sur les pages Razor ASP.NET Core modernes, sans aucune modification de code au niveau de la couche de gestion Excel. Vous pouvez trouver le package IronXL sur NuGet pour consulter l'historique des versions et les notes de version avant l'installation.

Quelle est la méthode la plus rapide pour charger des données Excel dans un GridView ?

La méthode la plus rapide combine WorkBook.Load, sheet.ToDataTable et GridView.DataBind en environ quatre lignes de code efficace. Dans les scénarios de base, aucune création manuelle de colonnes ni aucune itération de lignes ne sont nécessaires.

using IronXL;
using System.Data;

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

// true = treat first row as column headers
DataTable dataTable = sheet.ToDataTable(true);

GridView1.DataSource = dataTable;
GridView1.DataBind();
using IronXL;
using System.Data;

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

// true = treat first row as column headers
DataTable dataTable = sheet.ToDataTable(true);

GridView1.DataSource = dataTable;
GridView1.DataBind();
$vbLabelText   $csharpLabel

L'appel ToDataTable(true) indique à IronXL de promouvoir la première ligne de la feuille de calcul en noms de colonnes dans le résultat DataTable. Lorsque vous liez ce tableau à un GridView avec AutoGenerateColumns="true", ASP.NET crée automatiquement une colonne par en-tête Excel.

Comment la fonction ToDataTable gère-t-elle les types de données mixtes ?

Chaque valeur de cellule dans le DataTable est stockée par défaut comme un string lorsque vous appelez ToDataTable. Si votre application a besoin de colonnes typées -- par exemple, decimal pour les données de prix ou DateTime pour les dates -- vous pouvez lire les valeurs des cellules individuellement via l'indexeur WorkSheet et les convertir au type .NET approprié avant de remplir un DataTable fortement typé.

Pour un affichage simple dans un GridView, les colonnes de chaînes sont suffisantes car la grille affiche de toute façon toutes les valeurs sous forme de texte.

Comment créer une page Web Forms ASP.NET pour importer un fichier Excel ?

Une page d'importation minimale nécessite trois contrôles : un champ de téléchargement de fichier, un bouton de soumission et le GridView. Ajoutez le balisage ASPX suivant à l'intérieur de votre élément <form runat="server"> :

<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnUpload" runat="server" Text="Upload Excel File"
    OnClick="btnUpload_Click" />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true"
    CssClass="table table-bordered" />
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnUpload" runat="server" Text="Upload Excel File"
    OnClick="btnUpload_Click" />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true"
    CssClass="table table-bordered" />
$vbLabelText   $csharpLabel

L'attribut CssClass intègre la grille à votre feuille de style Bootstrap si vous en utilisez une, vous offrant ainsi des lignes et des bordures stylisées sans configuration supplémentaire.

Dans le code-behind, gérez l'événement de clic sur le bouton. Le modèle ci-dessous enregistre le fichier téléchargé dans un chemin serveur temporaire, le charge avec IronXL et lie le résultat DataTable à la grille :

using IronXL;
using System.Data;
using System.IO;

void btnUpload_Click(object sender, EventArgs e)
{
    if (!FileUpload1.HasFile) return;

    string uploadDir = Server.MapPath("~/Uploads/");
    Directory.CreateDirectory(uploadDir); // ensure directory exists

    string filePath = Path.Combine(uploadDir, Path.GetFileName(FileUpload1.FileName));
    FileUpload1.SaveAs(filePath);

    WorkBook workBook = WorkBook.Load(filePath);
    WorkSheet sheet = workBook.DefaultWorkSheet;
    DataTable dt = sheet.ToDataTable(true);

    GridView1.DataSource = dt;
    GridView1.DataBind();

    // Store for later export operations
    Session["CurrentData"] = dt;
}
using IronXL;
using System.Data;
using System.IO;

void btnUpload_Click(object sender, EventArgs e)
{
    if (!FileUpload1.HasFile) return;

    string uploadDir = Server.MapPath("~/Uploads/");
    Directory.CreateDirectory(uploadDir); // ensure directory exists

    string filePath = Path.Combine(uploadDir, Path.GetFileName(FileUpload1.FileName));
    FileUpload1.SaveAs(filePath);

    WorkBook workBook = WorkBook.Load(filePath);
    WorkSheet sheet = workBook.DefaultWorkSheet;
    DataTable dt = sheet.ToDataTable(true);

    GridView1.DataSource = dt;
    GridView1.DataBind();

    // Store for later export operations
    Session["CurrentData"] = dt;
}
$vbLabelText   $csharpLabel

Cette implémentation suit le style des instructions de niveau supérieur pour la logique à l'intérieur du gestionnaire d'événements tout en conservant la signature d'événement Web Forms requise. Notez que Directory.CreateDirectory est appelé de manière défensive -- si le dossier Uploads existe déjà, l'appel est une opération nulle.

Importer des données Excel dans un contrôle GridView en ASP.NET C# avec IronXL: les données de la feuille de calcul chargées sont affichées dans un contrôle GridView.

Une fois que l'utilisateur a sélectionné un fichier .xlsx et cliqué sur le bouton de téléchargement, la grille se remplit avec le contenu de la feuille de calcul. Les noms des colonnes proviennent de la première ligne du fichier Excel, et toutes les lignes suivantes deviennent des lignes de données dans la grille.

Comment valider le fichier téléchargé ?

Pour une utilisation en production, vous devez vérifier l'extension du fichier et le type MIME avant de le traiter. IronXL générera une exception pour les formats de fichiers non pris en charge, mais il est préférable de rejeter les chargements incorrects au niveau du contrôleur avant de toucher au système de fichiers :

string ext = Path.GetExtension(FileUpload1.FileName).ToLowerInvariant();
string[] allowed = { ".xls", ".xlsx" };

if (!allowed.Contains(ext))
{
    lblError.Text = "Only .xls and .xlsx files are accepted.";
    return;
}
string ext = Path.GetExtension(FileUpload1.FileName).ToLowerInvariant();
string[] allowed = { ".xls", ".xlsx" };

if (!allowed.Contains(ext))
{
    lblError.Text = "Only .xls and .xlsx files are accepted.";
    return;
}
$vbLabelText   $csharpLabel

Vous devez également imposer une taille de fichier maximale via les limites de requêtes IIS ou en vérifiant FileUpload1.FileBytes.Length par rapport à un seuil avant d'appeler SaveAs.

Comment accéder à des feuilles de calcul et des plages de cellules spécifiques ?

Lorsqu'un classeur Excel contient plusieurs feuilles, vous devez cibler une feuille spécifique par son nom plutôt que de vous fier à DefaultWorkSheet. IronXL fournit une méthode GetWorkSheet qui accepte le nom de l'onglet de la feuille sous forme de chaîne de caractères.

using IronXL;
using System.Data;

WorkBook workBook = WorkBook.Load("sales-report.xlsx");

// Access a named sheet
WorkSheet salesSheet = workBook.GetWorkSheet("Q4 Sales");

// Read a specific cell range
var topTen = salesSheet["A1:E11"];

// Convert the entire workbook to a DataSet (one DataTable per sheet)
DataSet allSheets = workBook.ToDataSet();

// Bind the first sheet's DataTable to the grid
GridView1.DataSource = allSheets.Tables[0];
GridView1.DataBind();
using IronXL;
using System.Data;

WorkBook workBook = WorkBook.Load("sales-report.xlsx");

// Access a named sheet
WorkSheet salesSheet = workBook.GetWorkSheet("Q4 Sales");

// Read a specific cell range
var topTen = salesSheet["A1:E11"];

// Convert the entire workbook to a DataSet (one DataTable per sheet)
DataSet allSheets = workBook.ToDataSet();

// Bind the first sheet's DataTable to the grid
GridView1.DataSource = allSheets.Tables[0];
GridView1.DataBind();
$vbLabelText   $csharpLabel

La méthode ToDataSet est utile lorsque votre application doit afficher des données provenant de plusieurs feuilles ou permettre à l'utilisateur de choisir la feuille à afficher. Chaque DataTable dans le DataSet renvoyé correspond à une feuille de calcul Excel, et le nom du tableau correspond au nom de l'onglet de la feuille.

Importer des données Excel dans un GridView en ASP.NET C# avec IronXL: données de feuille de calcul nommées liées à un GridView.

Comment filtrer les lignes avant de les lier à un GridView ?

Si vous souhaitez uniquement un sous-ensemble de lignes Excel (par exemple, les lignes où la colonne " Statut " est égale à " Actif "), lisez le DataTable produit par ToDataTable, appliquez un filtre DataView et liez la vue filtrée à la grille :

DataTable dt = sheet.ToDataTable(true);
DataView dv = new DataView(dt)
{
    RowFilter = "Status = 'Active'"
};

GridView1.DataSource = dv;
GridView1.DataBind();
DataTable dt = sheet.ToDataTable(true);
DataView dv = new DataView(dt)
{
    RowFilter = "Status = 'Active'"
};

GridView1.DataSource = dv;
GridView1.DataBind();
$vbLabelText   $csharpLabel

DataView.RowFilter accepte la syntaxe standard de la clause WHERE SQL -- le même langage d'expression documenté dans la propriété DataColumn.Expression sur Microsoft Learn -- vous permettant de trier et de filtrer sans charger de base de données.

Comment comparer les méthodes d'importation pour la liaison de données dans Excel GridView ?

Les différentes approches de liaison d'Excel à GridView présentent des compromis distincts. Le tableau ci-dessous récapitule les méthodes les plus courantes afin que vous puissiez choisir celle qui convient le mieux à votre situation.

Comparaison des méthodes d'importation Excel pour la liaison à GridView ASP.NET
Méthode Chauffeur requis Prise en charge XLS Assistance XLSX Dépendance du serveur Complexité du code
IronXL (ToDataTable) Aucune Oui Oui Aucune Faible
OLEDB / JET Moteur ACE/JET Oui Partiel Pilote 32/64 bits Haut
Open XML SDK Aucune Non Oui Aucune Haut
EPPlus Aucune Non Oui Aucune (licence commerciale requise pour la production) Moyen

IronXL prend en charge les formats XLS anciens et XLSX modernes, ne nécessite aucune installation de pilote côté serveur et offre la complexité de code la plus faible parmi les options listées. Pour les équipes qui utilisent déjà d'autres produits Iron Software tels IronPDF ou IronOCR , une seule licence Iron Software couvre la Suite complète.

Comment exporter les données de GridView vers Excel ?

Effectuer l'aller-retour (d'Excel vers une grille puis retour à Excel) est tout aussi concis avec IronXL. Ce modèle est utile pour les boutons " télécharger au format Excel " qui permettent aux utilisateurs d'exporter ce qui est actuellement affiché dans la grille.

void btnExport_Click(object sender, EventArgs e)
{
    DataTable dt = Session["CurrentData"] as DataTable;
    if (dt == null) return;

    WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet ws = workBook.CreateWorkSheet("Export");

    // Write header row
    for (int col = 0; col < dt.Columns.Count; col++)
        ws.SetCellValue(0, col, dt.Columns[col].ColumnName);

    // Write data rows
    for (int row = 0; row < dt.Rows.Count; row++)
        for (int col = 0; col < dt.Columns.Count; col++)
            ws.SetCellValue(row + 1, col, dt.Rows[row][col]?.ToString() ?? string.Empty);

    string exportDir = Server.MapPath("~/Exports/");
    Directory.CreateDirectory(exportDir);
    string exportPath = Path.Combine(exportDir, "export.xlsx");
    workBook.SaveAs(exportPath);

    Response.Clear();
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("Content-Disposition", "attachment; filename=export.xlsx");
    Response.TransmitFile(exportPath);
    Response.End();
}
void btnExport_Click(object sender, EventArgs e)
{
    DataTable dt = Session["CurrentData"] as DataTable;
    if (dt == null) return;

    WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet ws = workBook.CreateWorkSheet("Export");

    // Write header row
    for (int col = 0; col < dt.Columns.Count; col++)
        ws.SetCellValue(0, col, dt.Columns[col].ColumnName);

    // Write data rows
    for (int row = 0; row < dt.Rows.Count; row++)
        for (int col = 0; col < dt.Columns.Count; col++)
            ws.SetCellValue(row + 1, col, dt.Rows[row][col]?.ToString() ?? string.Empty);

    string exportDir = Server.MapPath("~/Exports/");
    Directory.CreateDirectory(exportDir);
    string exportPath = Path.Combine(exportDir, "export.xlsx");
    workBook.SaveAs(exportPath);

    Response.Clear();
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("Content-Disposition", "attachment; filename=export.xlsx");
    Response.TransmitFile(exportPath);
    Response.End();
}
$vbLabelText   $csharpLabel

L'appel Response.TransmitFile transmet le fichier enregistré au navigateur, déclenchant une boîte de dialogue de téléchargement. L'en-tête Content-Disposition: attachment garantit que les navigateurs téléchargent le fichier plutôt que d'essayer de l'afficher en ligne.

Importer un fichier Excel dans un GridView en ASP.NET C# avec IronXL: DataTable exporté vers un fichier Excel.

Quelles sont les options de formatage courantes IronXL pour les exportations ?

Au-delà des données brutes, IronXL vous permet d'appliquer une mise en forme aux cellules avant l'enregistrement. Vous pouvez définir des en-têtes en gras, la largeur des colonnes, le format des nombres et les couleurs d'arrière-plan :

// Bold the header row
ws["A1:Z1"].Style.Font.Bold = true;

// Apply a currency format to column C (index 2), rows 2 onward
ws[$"C2:C{dt.Rows.Count + 1}"].FormatString = IronXL.Styles.BuiltinFormats.Accounting2;

// Auto-fit column widths (IronXL approximates based on content length)
ws.AutoSizeColumn(0);
ws.AutoSizeColumn(1);
// Bold the header row
ws["A1:Z1"].Style.Font.Bold = true;

// Apply a currency format to column C (index 2), rows 2 onward
ws[$"C2:C{dt.Rows.Count + 1}"].FormatString = IronXL.Styles.BuiltinFormats.Accounting2;

// Auto-fit column widths (IronXL approximates based on content length)
ws.AutoSizeColumn(0);
ws.AutoSizeColumn(1);
$vbLabelText   $csharpLabel

Ces appels de mise en forme utilisent l' API de style de cellule IronXL , qui reflète le modèle objet du format de fichier Excel sans nécessiter d'interopérabilité.

Quelles sont vos prochaines étapes ?

Vous disposez désormais d'un pipeline complet et sans pilote pour importer des fichiers Excel dans un GridView ASP.NET et exporter les données du GridView vers Excel à l'aide IronXL. Voici les pistes à explorer ensuite pour consolider ces bases :

  • Consultez la documentation IronXL pour obtenir la référence complète de l'API, y compris l'évaluation des formules, les opérations sur les plages de cellules et la création de graphiques.
  • Explorez la bibliothèque d'exemples de code IronXL pour trouver des extraits de code prêts à l'emploi couvrant l'importation de fichiers CSV, les classeurs protégés par mot de passe, la mise en forme conditionnelle et bien plus encore.
  • Consultez le tutoriel Excel vers DataTable si vous souhaitez une explication plus détaillée du mappage des colonnes typées et de la gestion des valeurs nulles.
  • Consultez la page des licences IronXL pour découvrir les options disponibles, des licences de développement à la redistribution OEM.
  • Consultez le guide de lecture .NET Excel d'Iron Software pour comprendre en détail la navigation dans les classeurs et les feuilles de calcul.
  • Comparez IronXL avec d'autres solutions en utilisant la comparaison de bibliothèques Excel C# pour une analyse détaillée des fonctionnalités par rapport à OLEDB, EPPlus et au SDK Open XML.

Pour les applications .NET Core et ASP.NET Core , la même API IronXL fonctionne dans les Razor Pages et les contrôleurs MVC. Le guide IronXL ASP.NET Core détaille les différences en matière de gestion du téléchargement de fichiers et de modèles d'injection de dépendances.

Si vous intégrez IronXL en parallèle de la génération de documents, le guide d'intégration IronPDF montre comment exporter les données de GridView vers un rapport PDF en plus d'Excel ; cela est utile pour les applications qui nécessitent les deux formats.

Commencez par l' essai gratuit IronXL pour tester toutes les fonctionnalités dans votre projet avant d'acheter. Aucune carte de crédit n'est requise pour la licence d'essai.

Questions Fréquemment Posées

Quel est l'avantage d'utiliser IronXL pour importer des fichiers Excel dans un GridView en ASP.NET C# ?

L'utilisation IronXL simplifie l'importation de données Excel dans GridView en ASP.NET C# en éliminant le besoin de chaînes de connexion OLEDB complexes et d'installations de pilotes. Elle permet aux développeurs de charger des fichiers XLS et XLSX, de les convertir en DataTables et de les afficher dans des contrôles GridView grâce à un code simple.

Comment IronXL gère-t-il les différents formats de fichiers Excel ?

IronXL prend en charge différents formats de fichiers Excel, notamment XLS et XLSX, ce qui en fait un outil polyvalent pour l'importation de données dans GridView. Il garantit la compatibilité et la facilité d'utilisation avec différentes versions d'Excel.

IronXL peut-il convertir des fichiers Excel en DataTables ?

Oui, IronXL peut convertir les fichiers Excel en DataTables, qui peuvent ensuite être facilement affichés dans des contrôles GridView en ASP.NET C#. Cette fonctionnalité simplifie la manipulation et la visualisation des données.

IronXL est-il adapté pour les grands fichiers Excel ?

IronXL est conçu pour gérer efficacement les fichiers Excel volumineux, ce qui en fait un choix fiable pour les projets nécessitant l'importation de quantités importantes de données dans GridView en ASP.NET C#.

Quels sont les problèmes courants évités grâce à l'utilisation IronXL?

En utilisant IronXL, les développeurs peuvent éviter les problèmes courants tels que la gestion des chaînes de connexion OLEDB, la compatibilité des pilotes de serveur et les processus complexes d'importation de données, réduisant ainsi le temps de débogage.

IronXL nécessite-t-il une configuration serveur particulière ?

Non, IronXL ne nécessite aucune configuration serveur particulière ni aucun pilote supplémentaire, ce qui simplifie le déploiement et réduit les coûts de maintenance.

Comment IronXL améliore-t-il la productivité du développement ?

IronXL améliore la productivité du développement en fournissant un moyen simple et efficace d'importer des données Excel dans GridView en ASP.NET C#, permettant ainsi aux développeurs de se concentrer sur d'autres tâches critiques sans être freinés par la complexité de l'importation de données.

IronXL peut-il être intégré aux applications ASP.NET C# existantes ?

Oui, IronXL peut être facilement intégré aux applications ASP.NET C# existantes, permettant une importation transparente des données Excel dans GridView sans modifications importantes de l'architecture de l'application.

Quels langages de programmation sont pris en charge par IronXL?

IronXL est principalement conçu pour être utilisé dans les environnements C# et ASP.NET , offrant une prise en charge et une intégration robustes pour ces langages de programmation.

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