Passer au contenu du pied de page
COMPARER à D'AUTRES COMPOSANTS

ASP.NET Export to Excel : Comparaison des meilleurs outils pour les développeurs C#

L'exportation de données vers des fichiers Excel est essentielle dans les applications web ASP.NET Core. Qu'il s'agisse de générer des rapports à partir d'une base de données, de permettre aux utilisateurs d'exporter le contenu d'une grille ou de créer des exportations CSV, les développeurs ont besoin de méthodes fiables pour créer des documents Excel. Ces fichiers doivent s'ouvrir correctement dans Microsoft Excel, sans avertissement du navigateur ni nécessité d'ouvrir une nouvelle page pour gérer le téléchargement.

Cet article compare les approches populaires de l'exportation Excel dans ASP.NET Core, en examinant les méthodes traditionnelles aux côtés de bibliothèques modernes comme IronXL, ClosedXMLet EPPlus.

Démarrez votre essai gratuit pour découvrir comment IronXLsimplifie la création de fichiers Excel dans vos projets ASP.NET Core.

Quelles sont les méthodes courantes pour exporter des données vers Excel dans ASP.NET Core?

La manière la plus simple d'exporter des données implique plusieurs approches distinctes. La plupart des flux de travail commencent par l'établissement d'une chaîne de connexion pour récupérer les données avant de choisir un chemin d'exportation.

  • Approche traditionnelle du type MIME: Cette ancienne méthode utilise la propriété Content Type (définie sur application/vnd.ms-excel) et transmet le contenu HTML au navigateur. Bien qu'il s'agisse d'une solution par défaut dans les systèmes plus anciens, elle déclenche souvent des avertissements de format.
  • Solutions basées sur des bibliothèques : Les bibliothèques modernes nécessitent l'ajout de références NuGet pour générer de véritables fichiers XLSX à l'aide du format Open XML. Il s'agit notamment d'IronXL, ClosedXMLet EPPlus, qui fournissent des API permettant de créer des objets de classeur et d'enregistrer des fichiers avec un formatage approprié.

    Fonction Type MIME/HTML ClosedXML EPPlus IronXL
    Sortie XLSX authentique Non Oui Oui Oui
    Prise en charge des fichiers CSV Manuel Limité Limité Natif
    Pas d'avertissement Excel Non Oui Oui Oui
    Aide à la formulation Non Oui Oui Oui
    Exportation JSON/XML Non Non Non Oui
    Licence commerciale N/A MIT Polyform Commercial
    prise en charge de .NET Core Oui Oui Oui Oui

Comment fonctionne l'approche traditionnelle de l'exportation de grilles de visualisation ?

Dans les anciens WebForms et certains anciens modèles MVC, les développeurs exportent souvent les données des GridView en les rendant au format HTML. L'application utilise Response.AddHeader pour définir le nom du fichier et procède ensuite à l'écriture du flux HTML directement sur la sortie.

// Traditional approach - exports HTML disguised as Excel
public void ExportToExcel(object sender, EventArgs e)
{
    Response.Clear();
    Response.Buffer = true;
    Response.ContentType = "application/vnd.ms-excel";
    Response.AddHeader("content-disposition", "attachment;filename=Report.xls");
    StringWriter stringWriter = new StringWriter();
    HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWriter);
    // Render grid content as HTML
    DataGrid1.RenderControl(htmlTextWriter);
    Response.Write(stringWriter.ToString());
    Response.End();
}
public override void VerifyRenderingInServerForm(Control control)
{
    // Required to prevent server form rendering errors
}
// Traditional approach - exports HTML disguised as Excel
public void ExportToExcel(object sender, EventArgs e)
{
    Response.Clear();
    Response.Buffer = true;
    Response.ContentType = "application/vnd.ms-excel";
    Response.AddHeader("content-disposition", "attachment;filename=Report.xls");
    StringWriter stringWriter = new StringWriter();
    HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWriter);
    // Render grid content as HTML
    DataGrid1.RenderControl(htmlTextWriter);
    Response.Write(stringWriter.ToString());
    Response.End();
}
public override void VerifyRenderingInServerForm(Control control)
{
    // Required to prevent server form rendering errors
}
' Traditional approach - exports HTML disguised as Excel
Public Sub ExportToExcel(sender As Object, e As EventArgs)
    Response.Clear()
    Response.Buffer = True
    Response.ContentType = "application/vnd.ms-excel"
    Response.AddHeader("content-disposition", "attachment;filename=Report.xls")
    Dim stringWriter As New StringWriter()
    Dim htmlTextWriter As New HtmlTextWriter(stringWriter)
    ' Render grid content as HTML
    DataGrid1.RenderControl(htmlTextWriter)
    Response.Write(stringWriter.ToString())
    Response.End()
End Sub

Public Overrides Sub VerifyRenderingInServerForm(control As Control)
    ' Required to prevent server form rendering errors
End Sub
$vbLabelText   $csharpLabel

Sortie de légende

ASP.NET Export to Excel : Comparaison des meilleurs outils pour les développeurs C# : Image 1 - Sortie d'exportation Excel héritée

Cette méthode nécessite la fonction public override void VerifyRenderingInServerForm pour contourner la validation côté serveur. Cependant, le fichier généré contient du HTML plutôt que de véritables données au format Excel, ce qui conduit Microsoft Excel à afficher des avertissements de format. Cette approche ne permet pas de générer un formatage correct des feuilles Excel, des formules ou des colonnes dactylographiées.

Comment IronXLfor .NET simplifie-t-il la génération de fichiers Excel en ASP.NET Core?

IronXL fournit une API moderne permettant de créer de véritables fichiers Excel sans les dépendances de Microsoft Office. Elle permet aux utilisateurs de déclencher un téléchargement à partir de la même page sans interrompre l'expérience de l'utilisateur. L'exemple suivant montre comment exporter des données dans un document Excel et les diffuser dans le navigateur de l'utilisateur :

using IronXL;
using Microsoft.AspNetCore.Mvc;
public class ExportController : Controller
{
    [HttpPost]
    public IActionResult ExportReport()
    {
        // Create workbook and worksheet
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.CreateWorkSheet("Sales Data");
        // Add header row
        worksheet["A1"].Value = "Product";
        worksheet["B1"].Value = "Quantity";
        worksheet["C1"].Value = "Revenue";
        // Populate data rows from your data source
        worksheet["A2"].Value = "Widget A";
        worksheet["B2"].Value = 150;
        worksheet["C2"].Value = 4500.00;
        worksheet["A3"].Value = "Widget B";
        worksheet["B3"].Value = 230;
        worksheet["C3"].Value = 6900.00;
        // Style the header cells
        var headerRange = worksheet["A1:C1"];
        headerRange.Style.Font.Bold = true;
        // Generate file for browser download
        byte[] fileBytes = workbook.ToByteArray();
        string filename = $"SalesReport_{DateTime.Now:yyyyMMdd}.xlsx";
        return File(fileBytes,
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            filename);
    }
}
using IronXL;
using Microsoft.AspNetCore.Mvc;
public class ExportController : Controller
{
    [HttpPost]
    public IActionResult ExportReport()
    {
        // Create workbook and worksheet
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.CreateWorkSheet("Sales Data");
        // Add header row
        worksheet["A1"].Value = "Product";
        worksheet["B1"].Value = "Quantity";
        worksheet["C1"].Value = "Revenue";
        // Populate data rows from your data source
        worksheet["A2"].Value = "Widget A";
        worksheet["B2"].Value = 150;
        worksheet["C2"].Value = 4500.00;
        worksheet["A3"].Value = "Widget B";
        worksheet["B3"].Value = 230;
        worksheet["C3"].Value = 6900.00;
        // Style the header cells
        var headerRange = worksheet["A1:C1"];
        headerRange.Style.Font.Bold = true;
        // Generate file for browser download
        byte[] fileBytes = workbook.ToByteArray();
        string filename = $"SalesReport_{DateTime.Now:yyyyMMdd}.xlsx";
        return File(fileBytes,
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            filename);
    }
}
Imports IronXL
Imports Microsoft.AspNetCore.Mvc

Public Class ExportController
    Inherits Controller

    <HttpPost>
    Public Function ExportReport() As IActionResult
        ' Create workbook and worksheet
        Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
        Dim worksheet As WorkSheet = workbook.CreateWorkSheet("Sales Data")
        ' Add header row
        worksheet("A1").Value = "Product"
        worksheet("B1").Value = "Quantity"
        worksheet("C1").Value = "Revenue"
        ' Populate data rows from your data source
        worksheet("A2").Value = "Widget A"
        worksheet("B2").Value = 150
        worksheet("C2").Value = 4500.0
        worksheet("A3").Value = "Widget B"
        worksheet("B3").Value = 230
        worksheet("C3").Value = 6900.0
        ' Style the header cells
        Dim headerRange = worksheet("A1:C1")
        headerRange.Style.Font.Bold = True
        ' Generate file for browser download
        Dim fileBytes As Byte() = workbook.ToByteArray()
        Dim filename As String = $"SalesReport_{DateTime.Now:yyyyMMdd}.xlsx"
        Return File(fileBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename)
    End Function
End Class
$vbLabelText   $csharpLabel

Sortie IronXL

ASP.NET Export to Excel : Comparaison des meilleurs outils pour les développeurs C# : Image 2 - Sortie de l'exportation IronXLvers Excel

La méthode WorkBook.Create d'IronXL génère un nouveau document Excel, tandis que CreateWorkSheet ajoute des onglets de feuille de calcul nommés. La bibliothèque gère en interne toute la complexité d'Open XML, ce qui permet aux développeurs de se concentrer sur le remplissage des cellules avec des données.

La méthode ToByteArray() convertit le classeur en octets adaptés à la réponse File() d'ASP.NET Core, en définissant automatiquement des en-têtes de disposition de contenu corrects pour le téléchargement par le navigateur. Les utilisateurs reçoivent un fichier XLSX authentique qui s'ouvre sans avertissement.

Pour les scénarios d'exportation CSV nécessitant un format de valeurs séparées par des virgules, IronXLfournit la méthode SaveAsCsv :

// Export as CSV file instead of XLSX
workbook.SaveAsCsv("output.csv");
// Export as CSV file instead of XLSX
workbook.SaveAsCsv("output.csv");
$vbLabelText   $csharpLabel

Comment ClosedXMLet EPPlusse comparent-ils?

ClosedXML intègre le SDK Open XML de Microsoft à une API conviviale. Dans l'explorateur de solutions, procédez à l'installation via NuGet avec Install-Package ClosedXML :

using ClosedXML.Excel;
public IActionResult ExportWithClosedXML()
{
    using var workbook = new XLWorkbook();
    var worksheet = workbook.AddWorksheet("Data");
    worksheet.Cell(1, 1).Value = "Name";
    worksheet.Cell(1, 2).Value = "Amount";
    using var stream = new MemoryStream();
    workbook.SaveAs(stream);
    return File(stream.ToArray(),
        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
        "export.xlsx");
}
using ClosedXML.Excel;
public IActionResult ExportWithClosedXML()
{
    using var workbook = new XLWorkbook();
    var worksheet = workbook.AddWorksheet("Data");
    worksheet.Cell(1, 1).Value = "Name";
    worksheet.Cell(1, 2).Value = "Amount";
    using var stream = new MemoryStream();
    workbook.SaveAs(stream);
    return File(stream.ToArray(),
        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
        "export.xlsx");
}
Imports ClosedXML.Excel
Imports Microsoft.AspNetCore.Mvc

Public Function ExportWithClosedXML() As IActionResult
    Using workbook As New XLWorkbook()
        Dim worksheet = workbook.AddWorksheet("Data")
        worksheet.Cell(1, 1).Value = "Name"
        worksheet.Cell(1, 2).Value = "Amount"
        Using stream As New MemoryStream()
            workbook.SaveAs(stream)
            Return File(stream.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "export.xlsx")
        End Using
    End Using
End Function
$vbLabelText   $csharpLabel

Sortie ClosedXML

ASP.NET Export to Excel : Comparaison des meilleurs outils pour les développeurs C# : Image 3 - ClosedXMLexport to Excel output

EPPlus offre des fonctionnalités similaires mais requiert une attention particulière à ses conditions de licence pour une utilisation commerciale. Les deux bibliothèques créent des fichiers Excel valides, mais ne disposent pas de la prise en charge de l'exportation CSV native et de la conversion JSON d'IronXL.

Quelle bibliothèque les développeurs devraient-ils choisir pour l'exportation d'Excel ?

Pour les applications ASP.NET Core nécessitant une exportation Excel, la sélection de la bibliothèque dépend des exigences du projet :

Choisissez IronXLlorsque : vous avez besoin d'une prise en charge multiformat (fichier XLSX, CSV, JSON, XML), d' une assistance professionnelle ou lorsque vous développez des applications commerciales nécessitant une compatibilité garantie avec les fonctionnalités complexes d'Excel au sein de projets ASP.

Choisissez ClosedXMLlorsque : Vous développez des projets open source nécessitant une licence MIT avec génération de fichiers Excel basiques.

Choisissez EPPluslorsque : les projets existants utilisent déjà EPPluset que le coût de la migration est supérieur aux considérations de licence.

Capacité IronXL ClosedXML EPPlus
Exportation CSV/JSON/XML ✓Natif
Intégration de DataTable
Support Professionnel ✓Inclus Communauté Niveau payant
Exigences du système Aucun Aucun Aucun

Résumé

La mise en œuvre de la fonctionnalité d'exportation ASP.NET vers Excel nécessite de choisir entre des méthodes HTML héritées et des solutions de bibliothèque modernes. En même temps, l'approche traditionnelle du type MIME utilisant les nouveaux HtmlTextWriter et Response.AddHeader pour la disposition du contenu crée des téléchargements fonctionnels, mais le format de fichier exporté déclenche des avertissements et manque de véritables fonctionnalités Excel.

IronXL offre une véritable génération de fichiers Excel avec plusieurs formats de sortie, une gestion intuitive des feuilles de calcul et des classeurs, ainsi qu'une manipulation appropriée des lignes et des cellules de données. La bibliothèque élimine les surcharges void VerifyRenderingInServerForm et les modèles object sender, EventArgs e du code hérité.

Pour des conseils de mise en œuvre, consultez la documentation IronXLet exemples de code. Achetez une licence pour déployer IronXLen production et générer des documents Excel professionnels que vos utilisateurs peuvent télécharger à partir du navigateur.

Commencez avec IronXL maintenant.
green arrow pointer

Questions Fréquemment Posées

Quelles sont les principales caractéristiques d'IronXL pour l'exportation vers Excel en ASP.NET Core ?

IronXL offre une génération et une manipulation transparentes de fichiers Excel, permettant aux développeurs d'exporter des données sans installation de Microsoft Excel. Il prend en charge différents formats tels que XLS, XLSX et CSV, et offre des fonctionnalités robustes pour le style, le formatage et la manipulation des données.

Comment IronXL se compare-t-il à ClosedXML pour les projets ASP.NET Core ?

IronXL offre un support plus étendu pour l'exportation de structures de données complexes et inclut des fonctionnalités telles que le stylisme et l'intégration d'images. ClosedXML, bien que convivial, peut manquer de certaines fonctionnalités avancées qu'offre IronXL, en particulier pour les applications à grande échelle.

IronXL est-il adapté à la création de rapports Excel à partir de bases de données en ASP.NET ?

Oui, IronXL est idéal pour générer des rapports Excel à partir de bases de données, offrant une exportation facile des données à partir de diverses sources de données, en veillant à ce que les fichiers résultants soient compatibles avec Microsoft Excel.

Quels sont les avantages d'utiliser IronXL par rapport à EPPlus ?

IronXL propose une API plus complète, de meilleures performances pour les grands ensembles de données et des fonctionnalités plus larges pour la création et l'édition de fichiers Excel, ce qui en fait un choix plus polyvalent pour les applications ASP.NET Core complexes.

IronXL peut-il gérer de grands ensembles de données efficacement?

IronXL est optimisé pour les performances et peut gérer efficacement de grands ensembles de données, garantissant un traitement et une exportation rapides des données sans compromettre la vitesse de l'application.

IronXL nécessite-t-il l'installation de Microsoft Office pour l'exportation vers Excel ?

Non, IronXL ne nécessite pas l'installation de Microsoft Office. Il fonctionne de manière indépendante, offrant des capacités complètes de création et de manipulation de fichiers Excel au sein des applications ASP.NET Core.

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