Passer au contenu du pied de page
UTILISATION D'IRONXL

Création d'une API Excel for .NET Core: création, lecture et exportation de fichiers XLSX

Créer une API Excel for .NET Core est simple avec IronXL . Installez le package, créez un WorkBook, remplissez les cellules et renvoyez le flux directement -- aucun Microsoft Office requis.

Install-Package IronXL.Excel

IronXL gère la création de fichiers XLSX, l'importation de données, les exportations multiformats et la mise en forme des cellules entièrement dans du code .NET managé. Il fonctionne sous Windows, Linux et macOS, ce qui en fait un choix pratique pour toute API ASP.NET Core nécessitant une prise en charge programmatique d'Excel.

Comment installer IronXL dans un projet .NET Core ?

Ajoutez IronXL à n'importe quel projet .NET 10 via la console du gestionnaire de packages NuGet :

Install-Package IronXL.Excel

Ou installez-le via l'interface utilisateur NuGet de Visual Studio en recherchant IronXL . Le nom du package sur NuGet est IronXl.Excel .

Après l'installation, ajoutez using IronXL; à tout fichier qui crée ou lit des classeurs. Aucune bibliothèque d'interopérabilité Office, aucun enregistrement COM et aucune installation de Microsoft Excel ne sont requis sur la machine hôte : IronXL est entièrement autonome.

IronXL cible .NET Standard 2.0 et versions ultérieures, ce qui signifie que la même bibliothèque fonctionne pour les projets .NET Core, .NET 5/6/7/8/9/10 et .NET Framework . La documentation IronXL couvre en détail tous les environnements pris en charge.

Comment créer des fichiers Excel par programmation en .NET Core?

La création de documents Excel à partir de zéro ne nécessite que quelques lignes de code grâce à l'API intuitive d'IronXL. La bibliothèque offre un contrôle total sur les classeurs, les feuilles de calcul, les styles de cellules et les formules grâce à un modèle objet clair.

Voici une action de contrôleur qui crée un nouveau classeur Excel avec des données formatées, illustre la gestion des feuilles de calcul et applique des styles de cellules :

using IronXL;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/[controller]")]
public class ExcelController : ControllerBase
{
    [HttpGet("create-report")]
    public IActionResult CreateSalesReport()
    {
        // Create a new Excel workbook in XLSX format
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.CreateWorkSheet("Sales Data");

        // Set header labels in the first row
        worksheet["A1"].Value = "Product";
        worksheet["B1"].Value = "Q1 Sales";
        worksheet["C1"].Value = "Q2 Sales";
        worksheet["D1"].Value = "Total";

        // Bold headers and apply a blue background with white text
        worksheet["A1:D1"].Style.Font.Bold = true;
        worksheet["A1:D1"].Style.SetBackgroundColor("#4472C4");
        worksheet["A1:D1"].Style.Font.SetColor("#FFFFFF");

        // Add data rows
        worksheet["A2"].Value = "Widget Pro";
        worksheet["B2"].Value = 15000;
        worksheet["C2"].Value = 18500;
        worksheet["D2"].Formula = "=B2+C2";

        worksheet["A3"].Value = "Gadget Plus";
        worksheet["B3"].Value = 22000;
        worksheet["C3"].Value = 24000;
        worksheet["D3"].Formula = "=B3+C3";

        // Apply currency number format to sales columns
        worksheet["B2:D3"].Style.Format = "$#,##0";

        // Stream the XLSX file back to the caller
        var stream = workbook.ToStream();
        return File(
            stream,
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "SalesReport.xlsx");
    }
}
using IronXL;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/[controller]")]
public class ExcelController : ControllerBase
{
    [HttpGet("create-report")]
    public IActionResult CreateSalesReport()
    {
        // Create a new Excel workbook in XLSX format
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.CreateWorkSheet("Sales Data");

        // Set header labels in the first row
        worksheet["A1"].Value = "Product";
        worksheet["B1"].Value = "Q1 Sales";
        worksheet["C1"].Value = "Q2 Sales";
        worksheet["D1"].Value = "Total";

        // Bold headers and apply a blue background with white text
        worksheet["A1:D1"].Style.Font.Bold = true;
        worksheet["A1:D1"].Style.SetBackgroundColor("#4472C4");
        worksheet["A1:D1"].Style.Font.SetColor("#FFFFFF");

        // Add data rows
        worksheet["A2"].Value = "Widget Pro";
        worksheet["B2"].Value = 15000;
        worksheet["C2"].Value = 18500;
        worksheet["D2"].Formula = "=B2+C2";

        worksheet["A3"].Value = "Gadget Plus";
        worksheet["B3"].Value = 22000;
        worksheet["C3"].Value = 24000;
        worksheet["D3"].Formula = "=B3+C3";

        // Apply currency number format to sales columns
        worksheet["B2:D3"].Style.Format = "$#,##0";

        // Stream the XLSX file back to the caller
        var stream = workbook.ToStream();
        return File(
            stream,
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "SalesReport.xlsx");
    }
}
$vbLabelText   $csharpLabel

Fichier Excel de sortie

Créer une API Excel for .NET Core: Créer, lire et exporter des fichiers XLSX : Image 1 - Fichier Excel généré par l'API .NET Core

WorkBook.Create() prend en charge les formats XLSX et XLS. La méthode CreateWorkSheet() ajoute une feuille nommée dans laquelle vous remplissez les cellules avec des valeurs, appliquez des formules Excel pour les calculs et contrôlez la mise en page via des plages de cellules. Le moteur de calcul d'IronXL évalue automatiquement les formules lorsque les données du classeur changent, y compris la prise en charge des formules matricielles utilisées dans des scénarios d'analyse de données plus complexes.

Les styles de cellules vont bien au-delà du gras et de la couleur. L' API de mise en forme des cellules vous permet de définir les formats numériques, les bordures, l'alignement, les tailles de police et bien plus encore, le tout sans toucher à la couche COM. Cela permet de l'exécuter en toute sécurité dans des environnements Linux conteneurisés où aucun contexte d'affichage n'existe.

Comment ajouter plusieurs feuilles de calcul à un classeur ?

Un seul classeur peut contenir un nombre quelconque de feuilles de calcul. Appelez workbook.CreateWorkSheet("SheetName") pour chaque onglet nécessaire. Les feuilles de travail sont accessibles ultérieurement par nom via workbook.GetWorkSheet("SheetName") ou par index via workbook.WorkSheets[0].

Ce modèle est utile pour générer des rapports de synthèse et de détail : une feuille contient les totaux agrégés tandis que les feuilles enfants contiennent les lignes de transaction brutes. La documentation relative à la gestion des feuilles de calcul explique comment renommer, réorganiser et supprimer des feuilles lors de l'exécution.

Quelle est la meilleure façon de lire des données Excel dans les API Web ?

L'importation de données à partir de fichiers Excel téléchargés par les utilisateurs est essentielle pour toute application web qui traite du contenu de feuilles de calcul. IronXL permet de lire directement les feuilles de calcul Excel : chargez-les à partir d'un flux, parcourez les lignes et extrayez les valeurs saisies de chaque cellule.

[HttpPost("import")]
public IActionResult ImportExcelData(IFormFile file)
{
    if (file == null || file.Length == 0)
        return BadRequest("No file uploaded");

    using var stream = file.OpenReadStream();

    // Load the workbook directly from the upload stream
    WorkBook workbook = WorkBook.Load(stream);
    WorkSheet worksheet = workbook.DefaultWorkSheet;

    var records = new List<Dictionary<string, object>>();

    // Start at row 2 to skip the header row
    for (int row = 2; row <= worksheet.RowCount; row++)
    {
        var record = new Dictionary<string, object>
        {
            ["Product"] = worksheet[$"A{row}"].StringValue,
            ["Sales"]   = worksheet[$"B{row}"].DecimalValue,
            ["Date"]    = worksheet[$"C{row}"].DateTimeValue
        };
        records.Add(record);
    }

    return Ok(new {
        message     = "Import successful",
        recordCount = records.Count,
        data        = records
    });
}
[HttpPost("import")]
public IActionResult ImportExcelData(IFormFile file)
{
    if (file == null || file.Length == 0)
        return BadRequest("No file uploaded");

    using var stream = file.OpenReadStream();

    // Load the workbook directly from the upload stream
    WorkBook workbook = WorkBook.Load(stream);
    WorkSheet worksheet = workbook.DefaultWorkSheet;

    var records = new List<Dictionary<string, object>>();

    // Start at row 2 to skip the header row
    for (int row = 2; row <= worksheet.RowCount; row++)
    {
        var record = new Dictionary<string, object>
        {
            ["Product"] = worksheet[$"A{row}"].StringValue,
            ["Sales"]   = worksheet[$"B{row}"].DecimalValue,
            ["Date"]    = worksheet[$"C{row}"].DateTimeValue
        };
        records.Add(record);
    }

    return Ok(new {
        message     = "Import successful",
        recordCount = records.Count,
        data        = records
    });
}
$vbLabelText   $csharpLabel

Sortie

Créer une API Excel for .NET Core: Créer, lire et exporter des fichiers XLSX : Image 2 - Résultat montrant les données Excel importées avec succès

WorkBook.Load() ouvre les fichiers Excel à partir de flux, de chemins de fichiers ou de tableaux d'octets. Les cellules sont accessibles via la syntaxe d'indexation worksheet["A1"] ou en itérant une plage de cellules nommée. IronXL gère automatiquement la validation des données et expose des accesseurs de type sûr -- IntValue, DecimalValue, DateTimeValue, StringValue -- afin que le code consommateur reste propre et prévisible.

Comment filtrer et trier les données importées ?

Après avoir chargé un classeur, appelez .SortAscending() ou .SortDescending() sur n'importe quel objet Range pour trier les lignes. Pour le filtrage, parcourez les cellules et évaluez les conditions en temps réel ou transférez les données dans une collection LINQ pour un traitement ultérieur. Le guide de tri et de filtrage illustre les deux approches à l'aide d'exemples pratiques.

Vous travaillez avec des fichiers volumineux ? IronXL ne lit que les cellules consultées ; il n'est donc pas nécessaire de charger un fichier entier de plusieurs mégaoctets en mémoire avant d'interroger une colonne spécifique. Cette approche d'accès différé maintient une consommation de mémoire stable même lors du traitement de classeurs contenant des dizaines de milliers de lignes.

Comment exporter des données Excel vers différents formats ?

Les applications doivent souvent proposer des feuilles de calcul dans plusieurs formats de sortie. IronXL prend en charge l'exportation aux formats XLSX, XLS, CSV, JSON et HTML en un seul appel de méthode, sans nécessiter d'outils de conversion externes.

[HttpGet("export/{format}")]
public IActionResult ExportData(string format)
{
    // Load a pre-designed template workbook
    WorkBook workbook = WorkBook.Load("template.xlsx");

    return format.ToLower() switch
    {
        "xlsx" => File(
            workbook.ToStream(),
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "export.xlsx"),

        "csv"  => File(
            workbook.ToStream(FileFormat.CSV),
            "text/csv",
            "export.csv"),

        "json" => Ok(workbook.ToJson()),

        _      => BadRequest("Unsupported format")
    };
}
[HttpGet("export/{format}")]
public IActionResult ExportData(string format)
{
    // Load a pre-designed template workbook
    WorkBook workbook = WorkBook.Load("template.xlsx");

    return format.ToLower() switch
    {
        "xlsx" => File(
            workbook.ToStream(),
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "export.xlsx"),

        "csv"  => File(
            workbook.ToStream(FileFormat.CSV),
            "text/csv",
            "export.csv"),

        "json" => Ok(workbook.ToJson()),

        _      => BadRequest("Unsupported format")
    };
}
$vbLabelText   $csharpLabel

L'utilisation de modèles Excel avec des mises en page prédéfinies accélère la génération de rapports. Chargez un classeur prédéfini, remplissez des données dynamiques dans des cellules ou des plages nommées, puis diffusez le résultat. Cette approche convient aux rapports de vente, aux factures et aux documents de conformité où la cohérence de la mise en forme prime sur la flexibilité.

La compatibilité multiplateforme d'IronXL signifie que ces opérations sur les fichiers fonctionnent de manière identique sous Windows, Linux et macOS, ce qui le rend adapté aux déploiements conteneurisés .NET Core . Pour en savoir plus, consultez le guide multiplateforme IronXL .

Comment exporter au format CSV depuis une API .NET Core ?

Appelez workbook.ToStream(FileFormat.CSV) et renvoyez-le avec le type de contenu text/csv, comme indiqué ci-dessus. Pour les classeurs à plusieurs feuilles, chaque feuille peut être exportée indépendamment en accédant à workbook.WorkSheets[index] et en appelant .ToStream(FileFormat.CSV) sur l'objet feuille. La documentation relative à l'exportation CSV couvre la gestion des délimiteurs, l'encodage et les options de format de date.

Comment appliquer la mise en forme conditionnelle et les barres de données ?

Au-delà des styles de cellules de base, IronXL prend en charge les règles de mise en forme conditionnelle : surlignez en vert les cellules au-dessus d'un seuil, signalez les valeurs négatives en rouge ou appliquez des barres de données dégradées pour rendre les tendances immédiatement visibles dans la feuille de calcul sans aucun post-traitement dans un outil séparé.

La mise en forme conditionnelle est particulièrement précieuse dans les tableaux de bord financiers et les rapports d'indicateurs clés de performance (KPI) où les lecteurs doivent repérer les valeurs aberrantes d'un seul coup d'œil. Plutôt que de laisser au destinataire le soin d'appliquer sa propre mise en forme après le téléchargement, les règles sont intégrées au fichier XLSX et sont évaluées automatiquement lorsque le fichier s'ouvre dans n'importe quelle version de Microsoft Excel ou visionneuse compatible.

La mise en forme conditionnelle est définie via la propriété ConditionalFormatting de la feuille de calcul. Les règles s'appliquent à une plage de cellules nommée et prennent en charge plusieurs types de conditions : comparaisons de valeurs de cellules, règles basées sur des formules, échelles de couleurs qui classent les valeurs de basses à hautes et superpositions de barres de données qui fonctionnent comme des graphiques à barres intégrés aux cellules. La spécification Open XML définit la structure de règles sous-jacente IronXL écrit dans le fichier XLSX.

Pour une documentation complète sur l'application des échelles de couleurs, des jeux d'icônes et des barres de données, consultez le tutoriel sur la mise en forme conditionnelle dans la documentation IronXL .

Comment protéger vos fichiers et feuilles de calcul Excel ?

La diffusion de rapports contenant des données sensibles nécessite un niveau de contrôle d'accès. IronXL prend en charge la protection par mot de passe au niveau du classeur et la protection au niveau de la feuille de calcul :

Mot de passe du classeur : définissez workbook.Password = "secret" avant d'appeler .SaveAs() pour chiffrer le fichier XLSX. Les destinataires doivent saisir le mot de passe pour l'ouvrir dans Excel.

  • Protection de la feuille de calcul : Appelez worksheet.ProtectSheet("password") pour verrouiller la modification des cellules tout en permettant la visualisation de la feuille. Des plages spécifiques peuvent être déverrouillées pour la saisie de données à l'aide de l'API AllowEditRange.
  • Distribution en lecture seule : Pour les documents qui ne doivent jamais être modifiés, combinez la protection de la feuille de calcul avec le chiffrement au niveau du fichier.

Les fichiers XLSX protégés par mot de passe utilisent par défaut le chiffrement AES-128, la même norme que celle utilisée par Excel natif. Cela signifie qu'un fichier protégé par IronXL est entièrement compatible avec l'invite d'ouverture de fichier intégrée à Excel ; aucun visualiseur spécial n'est requis côté destinataire.

Ces fonctionnalités de sécurité complètent le modèle de sécurité standard de .NET Core et sont particulièrement utiles lors de la création de points de terminaison de reporting financier ou RH. La documentation relative à la protection des fichiers fournit la référence API complète.

Comment utiliser les formules Excel dans .NET?

Le moteur de calcul intégré d'IronXL évalue les formules Excel standard à l'exécution, ce qui permet à l'API de renvoyer les valeurs calculées sans avoir à enregistrer le fichier sur le disque ni à le rouvrir dans Excel au préalable. Attribuez une chaîne de formule à la propriété .Formula de n'importe quelle cellule :

// Sum a column and place the result in a footer row
worksheet[$"B{lastRow}"].Formula = $"=SUM(B2:B{lastRow - 1})";

// Calculate an average across a range
worksheet[$"C{lastRow}"].Formula = $"=AVERAGE(C2:C{lastRow - 1})";

// Retrieve the computed value immediately
decimal total = worksheet[$"B{lastRow}"].DecimalValue;
// Sum a column and place the result in a footer row
worksheet[$"B{lastRow}"].Formula = $"=SUM(B2:B{lastRow - 1})";

// Calculate an average across a range
worksheet[$"C{lastRow}"].Formula = $"=AVERAGE(C2:C{lastRow - 1})";

// Retrieve the computed value immediately
decimal total = worksheet[$"B{lastRow}"].DecimalValue;
$vbLabelText   $csharpLabel

IronXL prend en charge la plupart des fonctions Excel standard, notamment les fonctions mathématiques, statistiques, de texte, de date et de recherche. Les formules matricielles (Ctrl+Shift+Enter sémantique) sont également prises en charge pour les scénarios avancés. Comme l'évaluation des formules s'effectue au sein du processus .NET , il n'y a pas d'aller-retour vers un service de calcul externe : les résultats sont disponibles immédiatement après l'attribution de la formule, ce qui permet de maintenir des temps de réponse de l'API prévisibles même lors de calculs sur des milliers de lignes. La liste de référence des formules prises en charge répertorie toutes les fonctions compatibles.

Quelles sont vos prochaines étapes ?

La création d'une API Excel avec IronXL confère aux applications .NET Core de solides capacités pour la manipulation de feuilles de calcul. De la création de fichiers XLSX avec des données formatées et des formules calculées à l'importation des téléchargements des utilisateurs et à l'exportation de données dans de multiples formats, IronXL gère tous les aspects de la manipulation programmatique des feuilles de calcul de manière multiplateforme et sans Office.

Explorez ces ressources pour aller plus loin :

Page produit IronXL : présentation des fonctionnalités et guide de démarrage

Démarrez un essai gratuit pour tester IronXL dans un projet réel, ou consultez les options de licence pour trouver le plan adapté à un déploiement en production.

Questions Fréquemment Posées

Qu'est-ce qu'IronXL?

IronXL est une bibliothèque Excel .NET qui permet aux développeurs de créer, lire et exporter des fichiers Excel par programmation en C# sans nécessiter Microsoft Office ni l'interopérabilité COM.

Comment créer un fichier Excel en .NET Core sans Office ?

Appelez WorkBook.Create(ExcelFileFormat.XLSX) pour créer un nouveau classeur, ajoutez des feuilles avec CreateWorkSheet(), remplissez les cellules avec la syntaxe worksheet['A1'].Value et diffusez le résultat avec workbook.ToStream().

Comment lire un fichier Excel téléchargé dans ASP.NET Core?

Transmettez le flux IFormFile à WorkBook.Load(stream), accédez à DefaultWorkSheet et parcourez les lignes à l'aide de worksheet.RowCount. Les accesseurs typés tels que DecimalValue et DateTimeValue extraient des données fortement typées de chaque cellule.

IronXL peut-il exporter des données Excel au format CSV ou JSON ?

Oui. Appelez workbook.ToStream(FileFormat.CSV) pour obtenir une sortie CSV ou workbook.ToJson() pour obtenir une représentation JSON des données du classeur.

IronXL fonctionne-t-il sous Linux et macOS ?

Oui. IronXL cible .NET Standard 2.0 et versions ultérieures et fonctionne sous Windows, Linux et macOS sans installation de Microsoft Office ni couche COM.

Comment protéger un fichier Excel par mot de passe avec IronXL?

Définissez la propriété Workbook.Password sur une chaîne de caractères avant d'appeler SaveAs(). Pour une protection au niveau de la feuille de calcul, appelez Worksheet.ProtectSheet('password') afin d'empêcher la modification des cellules tout en autorisant la lecture de la feuille.

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