Passer au contenu du pied de page
UTILISATION D'IRONXL

Comment créer des rapports Excel en C# en utilisant IronXL

Créer des rapports Excel en C# avec IronXL

La création de rapports Excel en C# est une exigence fondamentale dans les applications commerciales modernes et les applications .NET. Que vous génériez des états financiers, des analyses de ventes ou des tableaux de bord d'inventaire, l'automatisation du processus de création de fichiers et de feuilles de calcul Excel permet de gagner des heures de travail manuel tout en réduisant les erreurs.

IronXL fournit une solution puissante et intuitive aux développeurs pour créer un rapport Excel en C# sans nécessiter Microsoft Office, MS Excel ou les dépendances Interop traditionnelles. Contrairement à l'automatisation OLE ou aux approches qui reposent sur l'application Excel, IronXL permet de générer des classeurs Excel et des données Excel directement dans le code, en une seule ligne si nécessaire. Dans ce guide, nous vous apprendrons à créer des rapports Excel avec IronXL, avec des exemples de code faciles à suivre que vous pourrez facilement mettre en œuvre dans vos propres projets !

Qu'est-ce qu'IronXL et pourquoi l'utiliser pour la génération de fichiers Excel ?

IronXL est une bibliothèque Excel .NET qui permet aux développeurs de créer, de lire des feuilles de calcul Excel et de manipuler des fichiers Excel directement à partir du code source C# ou Visual Basic. Contrairement aux approches Microsoft Office Interop qui s'appuient sur l'application Excel complète ou la rétro-ingénierie via Open XML SDK, IronXL fonctionne sur Windows, Linux, macOS et les environnements cloud sans nécessiter l'installation d'Excel ou de dépendances tierces. Cela le rend idéal pour les rapports Excel côté serveur, les flux de travail automatisés et les applications Web construites sur .NET Core ou le framework .NET.

Pour les équipes qui passent de processus Excel manuels, d'anciennes bibliothèques ou de flux de travail d'outils de productivité Open XML nécessitant la navigation dans différents espaces de noms XML, IronXL fournit une API intuitive. Il prend en charge à la fois les fichiers XLS traditionnels et les fichiers XLSX modernes, qui sont essentiellement des fichiers ZIP contenant des fichiers XML et divers dossiers. Que vous souhaitiez générer un nouveau classeur Excel, manipuler plusieurs feuilles de calcul ou charger des données Excel à partir d'un code externe, IronXL simplifie radicalement le processus sans qu'il soit nécessaire de comprendre les formats sous-jacents.

Premiers pas avec IronXL pour créer un fichier Excel

Configurer IronXL pour créer des rapports Excel ne prend que quelques minutes. Installez la bibliothèque via le gestionnaire de packages NuGet dans Visual Studio :

Install-Package IronXL.Excel
Install-Package IronXL.Excel
SHELL

Téléchargez IronXL dès aujourd'hui et commencez à automatiser la génération de vos rapports Excel.

Une fois installé, la création de votre premier rapport Excel ne nécessite que quelques lignes de code :

using IronXL;
// Create a new Excel workbook for reports
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add a worksheet for the report
WorkSheet reportSheet = workBook.CreateWorkSheet("Monthly Report");
// Add a title
reportSheet["A1"].Value = "Sales Report - January 2024";
reportSheet["A1"].Style.Font.Bold = true;
// Save the Excel report
workBook.SaveAs("MonthlyReport.xlsx");
using IronXL;
// Create a new Excel workbook for reports
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add a worksheet for the report
WorkSheet reportSheet = workBook.CreateWorkSheet("Monthly Report");
// Add a title
reportSheet["A1"].Value = "Sales Report - January 2024";
reportSheet["A1"].Style.Font.Bold = true;
// Save the Excel report
workBook.SaveAs("MonthlyReport.xlsx");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Ce code crée un nouveau fichier de rapport Excel avec un titre formaté. La syntaxe familière de référence aux cellules (reportSheet["A1"]) permet aux développeurs de spécifier facilement l'endroit exact où les données doivent apparaître, comme s'ils travaillaient manuellement avec Excel.

Sortie

Comment créer des rapports Excel en C# à l'aide d'IronXL : Image 1 - Exemple de sortie Excel

Chargement de données à partir de sources multiples

Dans le monde réel, les rapports Excel utilisent rarement des données statiques. IronXL excelle dans l'intégration de données Excel provenant de divers formats, d'API, de nouvelles sources DataTable, ou même de plusieurs fichiers XML différents. Cela le rend idéal pour la génération dynamique de rapports Excel en C# dans des applications côté serveur ou Web.

Intégration de bases de données

Pour les rapports Excel basés sur des bases de données, IronXL fonctionne en toute transparence avec ADO.NET DataTables :

using System.Data;
using System.Data.SqlClient;
// Fetch data from database
string connectionString = "Server=localhost;Database=Sales;Integrated Security=true;";
DataTable salesData = new DataTable();
using (SqlConnection conn = new SqlConnection(connectionString))
{
    SqlDataAdapter adapter = new SqlDataAdapter(
        "SELECT ProductName, Quantity, Revenue FROM MonthlySales", conn);
    adapter.Fill(salesData);
}
// Create Excel report from DataTable
WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.CreateWorkSheet("Sales Data");
// Add headers
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Quantity";
sheet["C1"].Value = "Revenue";
// Populate data
int row = 2;
foreach (DataRow dataRow in salesData.Rows)
{
    sheet[$"A{row}"].Value = dataRow["ProductName"];
    sheet[$"B{row}"].Value = dataRow["Quantity"];
    sheet[$"C{row}"].Value = dataRow["Revenue"];
    row++;
}
using System.Data;
using System.Data.SqlClient;
// Fetch data from database
string connectionString = "Server=localhost;Database=Sales;Integrated Security=true;";
DataTable salesData = new DataTable();
using (SqlConnection conn = new SqlConnection(connectionString))
{
    SqlDataAdapter adapter = new SqlDataAdapter(
        "SELECT ProductName, Quantity, Revenue FROM MonthlySales", conn);
    adapter.Fill(salesData);
}
// Create Excel report from DataTable
WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.CreateWorkSheet("Sales Data");
// Add headers
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Quantity";
sheet["C1"].Value = "Revenue";
// Populate data
int row = 2;
foreach (DataRow dataRow in salesData.Rows)
{
    sheet[$"A{row}"].Value = dataRow["ProductName"];
    sheet[$"B{row}"].Value = dataRow["Quantity"];
    sheet[$"C{row}"].Value = dataRow["Revenue"];
    row++;
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Cette méthode charge les données de vente directement depuis SQL Server dans votre rapport Excel. L'intégration de DataTable vous permet d'utiliser votre code d'accès aux données existant sans modification. Pour des scénarios plus complexes, voyez comment charger Excel à partir de bases de données SQL.

Travailler avec les collections

Pour les données en mémoire, les données Excel provenant des réponses API ou une nouvelle table de données, les collections peuvent facilement remplir des feuilles de calcul Excel sans Microsoft Excel ou des dépendances tierces :

var salesRecords = new List<SalesRecord>
{
    new SalesRecord { Product = "Widget A", Units = 150, Price = 29.99m },
    new SalesRecord { Product = "Widget B", Units = 82, Price = 49.99m }
};
// Convert collection to Excel
for (int i = 0; i < salesRecords.Count; i++)
{
    sheet[$"A{i+2}"].Value = salesRecords[i].Product;
    sheet[$"B{i+2}"].Value = salesRecords[i].Units;
    sheet[$"C{i+2}"].Value = salesRecords[i].Price;
}
var salesRecords = new List<SalesRecord>
{
    new SalesRecord { Product = "Widget A", Units = 150, Price = 29.99m },
    new SalesRecord { Product = "Widget B", Units = 82, Price = 49.99m }
};
// Convert collection to Excel
for (int i = 0; i < salesRecords.Count; i++)
{
    sheet[$"A{i+2}"].Value = salesRecords[i].Product;
    sheet[$"B{i+2}"].Value = salesRecords[i].Units;
    sheet[$"C{i+2}"].Value = salesRecords[i].Price;
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Cette méthode permet de créer un rapport Excel en C# directement dans une application .NET, ce qui simplifie considérablement le processus de génération de plusieurs feuilles de calcul ou fichiers XLSX par rapport à l'automatisation OLE manuelle ou à la rétro-ingénierie des fichiers XML.

Sortie

Comment créer des rapports Excel en C# à l'aide d'IronXL : Image 2 - Exemple de feuille de calcul à partir de la sortie des données

Mise en forme de rapports Excel professionnels

Les données brutes seules ne permettent pas d'établir un rapport professionnel. IronXL fournit des options de formatage de cellules complètes pour créer des fichiers Excel polis et prêts pour l'entreprise. Le code suivant montre à quel point c'est facile avec IronXL :

using IronXL;
using IronXL.Styles;

class Program
{
    static void Main(string[] args)
    {
        // Create a new workbook
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        // Add a new worksheet
        var sheet = workbook.CreateWorkSheet("MySheet");
        // Add header values
        sheet["A1"].Value = "Product";
        sheet["B1"].Value = "Quantity";
        sheet["C1"].Value = "Price";
        // Add sample data rows
        sheet["A2"].Value = "Laptop";
        sheet["B2"].Value = 5;
        sheet["C2"].Value = 1299.99;
        sheet["A3"].Value = "Headphones";
        sheet["B3"].Value = 15;
        sheet["C3"].Value = 199.50;
        sheet["A4"].Value = "Keyboard";
        sheet["B4"].Value = 10;
        sheet["C4"].Value = 89.99;
        sheet["A5"].Value = "Monitor";
        sheet["B5"].Value = 7;
        sheet["C5"].Value = 249.00;
        // Header formatting
        var headerRange = sheet["A1:C1"];
        headerRange.Style.Font.Bold = true;
        headerRange.Style.SetBackgroundColor("#4472C4");
        headerRange.Style.Font.Color = "#FFFFFF";
        headerRange.Style.BottomBorder.Type = BorderType.Thick;
        // Number formatting for currency
        sheet["C:C"].FormatString = "$#,##0.00";
        // Alternating row colors for readability
        for (int row = 2; row <= 10; row++)
        {
            if (row % 2 == 0)
            {
                sheet[$"A{row}:C{row}"].Style.SetBackgroundColor("#F2F2F2");
            }
        }
        // Column width adjustment
        sheet.Columns[0].Width = 15 * 256; // Width in 1/256th of character width
        sheet.Columns[2].Width = 12 * 256;
        // Add borders around data
        var dataRange = sheet["A1:C10"];
        dataRange.Style.TopBorder.Type = BorderType.Thin;
        dataRange.Style.RightBorder.Type = BorderType.Thin;
        dataRange.Style.BottomBorder.Type = BorderType.Thin;
        dataRange.Style.LeftBorder.Type = BorderType.Thin;
        // Save the workbook to a file
        workbook.SaveAs("MyWorkbook.xlsx");
    }
}
using IronXL;
using IronXL.Styles;

class Program
{
    static void Main(string[] args)
    {
        // Create a new workbook
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        // Add a new worksheet
        var sheet = workbook.CreateWorkSheet("MySheet");
        // Add header values
        sheet["A1"].Value = "Product";
        sheet["B1"].Value = "Quantity";
        sheet["C1"].Value = "Price";
        // Add sample data rows
        sheet["A2"].Value = "Laptop";
        sheet["B2"].Value = 5;
        sheet["C2"].Value = 1299.99;
        sheet["A3"].Value = "Headphones";
        sheet["B3"].Value = 15;
        sheet["C3"].Value = 199.50;
        sheet["A4"].Value = "Keyboard";
        sheet["B4"].Value = 10;
        sheet["C4"].Value = 89.99;
        sheet["A5"].Value = "Monitor";
        sheet["B5"].Value = 7;
        sheet["C5"].Value = 249.00;
        // Header formatting
        var headerRange = sheet["A1:C1"];
        headerRange.Style.Font.Bold = true;
        headerRange.Style.SetBackgroundColor("#4472C4");
        headerRange.Style.Font.Color = "#FFFFFF";
        headerRange.Style.BottomBorder.Type = BorderType.Thick;
        // Number formatting for currency
        sheet["C:C"].FormatString = "$#,##0.00";
        // Alternating row colors for readability
        for (int row = 2; row <= 10; row++)
        {
            if (row % 2 == 0)
            {
                sheet[$"A{row}:C{row}"].Style.SetBackgroundColor("#F2F2F2");
            }
        }
        // Column width adjustment
        sheet.Columns[0].Width = 15 * 256; // Width in 1/256th of character width
        sheet.Columns[2].Width = 12 * 256;
        // Add borders around data
        var dataRange = sheet["A1:C10"];
        dataRange.Style.TopBorder.Type = BorderType.Thin;
        dataRange.Style.RightBorder.Type = BorderType.Thin;
        dataRange.Style.BottomBorder.Type = BorderType.Thin;
        dataRange.Style.LeftBorder.Type = BorderType.Thin;
        // Save the workbook to a file
        workbook.SaveAs("MyWorkbook.xlsx");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Ces options de mise en forme transforment des données de base en rapports professionnels. L'API de style couvre tout, de fonts et couleurs à borders and alignment, ce qui permet un contrôle complet de l'apparence des rapports Excel. Pour les besoins de mise en forme avancée, explorez la mise en forme conditionnelle pour mettre automatiquement en évidence les données importantes.

Comment créer des rapports Excel en C# à l'aide d'IronXL : Image 3 - Sortie Excel formatée

Utilisation de formules pour les calculs dynamiques des rapports Excel

La puissance d'Excel réside dans ses formules, et IronXL prend entièrement en charge la création de formules Excel :

// Add formula for row totals
sheet["D1"].Value = "Total";
sheet["D2"].Formula = "=B2*C2";
// Copy formula down the column
for (int row = 3; row <= 10; row++)
{
    sheet[$"D{row}"].Formula = $"=B{row}*C{row}";
}
// Add summary formulas
sheet["A12"].Value = "Summary";
sheet["B12"].Formula = "=SUM(B2:B10)";
sheet["C12"].Formula = "=AVERAGE(C2:C10)";
sheet["D12"].Formula = "=SUM(D2:D10)";
// Add formula for row totals
sheet["D1"].Value = "Total";
sheet["D2"].Formula = "=B2*C2";
// Copy formula down the column
for (int row = 3; row <= 10; row++)
{
    sheet[$"D{row}"].Formula = $"=B{row}*C{row}";
}
// Add summary formulas
sheet["A12"].Value = "Summary";
sheet["B12"].Formula = "=SUM(B2:B10)";
sheet["C12"].Formula = "=AVERAGE(C2:C10)";
sheet["D12"].Formula = "=SUM(D2:D10)";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

La prise en charge des formules comprend toutes les fonctions Excel standard telles que SUM, AVERAGE, IF, VLOOKUP, et bien d'autres. IronXL gère automatiquement les dépendances des formules et l'ordre de calcul, ce qui simplifie la génération de rapports Excel avec des calculs complexes. En savoir plus sur les fonctions mathématiques dans IronXL.

Comment créer des rapports Excel en C# à l'aide d'IronXL : Image 4 - Exemple de sortie avec formules

Rapports basés sur des modèles

Pour les rapports Excel récurrents ou les classeurs standardisés, IronXL prend en charge la génération basée sur des modèles, permettant aux développeurs de créer un fichier Excel à partir d'un modèle sans avoir à gérer le SDK Open XML, les fichiers rels ou divers dossiers :

// Load existing template
Workbook templateBook = Workbook.Load("ReportTemplate.xlsx");
Worksheet templateSheet = templateBook.DefaultWorksheet;
// Find and replace template markers
foreach (var cell in templateSheet["A1:Z100"])
{
    if (cell.Text.Contains("{{CompanyName}}"))
        cell.Value = cell.Text.Replace("{{CompanyName}}", "Acme Corp");
    if (cell.Text.Contains("{{ReportDate}}"))
        cell.Value = cell.Text.Replace("{{ReportDate}}", DateTime.Now.ToString("MMMM yyyy"));
}
// Save as new report
templateBook.SaveAs($"Report_{DateTime.Now:yyyyMMdd}.xlsx");
// Load existing template
Workbook templateBook = Workbook.Load("ReportTemplate.xlsx");
Worksheet templateSheet = templateBook.DefaultWorksheet;
// Find and replace template markers
foreach (var cell in templateSheet["A1:Z100"])
{
    if (cell.Text.Contains("{{CompanyName}}"))
        cell.Value = cell.Text.Replace("{{CompanyName}}", "Acme Corp");
    if (cell.Text.Contains("{{ReportDate}}"))
        cell.Value = cell.Text.Replace("{{ReportDate}}", DateTime.Now.ToString("MMMM yyyy"));
}
// Save as new report
templateBook.SaveAs($"Report_{DateTime.Now:yyyyMMdd}.xlsx");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Cette approche permet de conserver une mise en forme cohérente tout en mettant à jour le contenu dynamique, ce qui est idéal pour les rapports mensuels ou les documents standardisés.

Comment créer des rapports Excel en C# à l'aide d'IronXL : Image 5 - Le modèle de rapport vs notre fichier Excel créé à l'aide du modèle

Meilleures pratiques et dépannage

Lors de la mise en œuvre de la génération de rapports Excel, gardez ces conseils à l'esprit :

  • Utilisation de la mémoire avec des fichiers volumineux : Traitez les données par morceaux plutôt que de charger des ensembles de données entiers (Recommandations de Microsoft pour les gros fichiers Excel)
  • Problèmes de formatage des dates : Utilisez DateTime.ToOADate() pour des dates compatibles avec Excel (Excel date system explained)
  • Erreurs de fichiers verrouillés : Toujours éliminer correctement les objets Excel à l'aide des instructions using ou des nouvelles approches MemoryStream.
  • Styles manquants : Certaines propriétés de style nécessitent de définir d'abord la couleur d'arrière-plan

Conclusion

IronXL transforme la génération de rapports Excel, un processus manuel fastidieux, en un flux de travail automatisé et fiable. Grâce à son API intuitive, sa compatibilité multiplateforme et son ensemble complet de fonctionnalités, les développeurs peuvent créer des rapports Excel professionnels en quelques minutes plutôt qu'en quelques heures. La combinaison d'une intégration de données facile, d'options de mise en forme puissantes et d'une prise en charge des formules fait d'IronXL un outil essentiel pour tout développeur C# travaillant avec des rapports Excel. Pour les développeurs intéressés, IronXL propose un essai gratuit et autres options de licence pour les entreprises et les particuliers.

Commencez avec IronXL maintenant.
green arrow pointer

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