Comment créer un fichier Excel en C#

How to Create an Excel File in C# (.NET Tutorial)

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronXL est une puissante bibliothèque Excel C# et .NET qui vous permet de créer, lire et modifier des feuilles de calcul XLSX par programmation, sans dépendance à Microsoft Office ni à Interop. Il prend en charge .NET 8, .NET 9, .NET Core, .NET Framework et fonctionne sous Windows, Linux, macOS, Azure et AWS.

Ce tutoriel vous guide pas à pas dans la création d'un classeur Excel complet en C# : définition des valeurs des cellules, application de la mise en forme, ajout de formules et exportation aux formats XLSX, CSV et plus encore, avec des exemples de code détaillés.

Démarrage rapide : Créer un fichier Excel

Utilisez IronXL pour créer un nouveau fichier Excel en un rien de temps : choisissez un format, ajoutez une feuille, définissez la valeur d'une cellule et enregistrez. C'est la méthode la plus rapide pour générer des fichiers XLSX grâce à des appels d'API intuitifs et sans aucun problème d'interopérabilité.

  1. Installez IronXL avec le Gestionnaire de Packages NuGet

    PM > Install-Package IronXL.Excel
  2. Copiez et exécutez cet extrait de code.

    WorkBook book = IronXl.WorkBook.Create(IronXl.ExcelFileFormat.XLSX); book.CreateWorkSheet("Sheet1")["A1"].Value = "Hello World"; book.SaveAs("MyFile.xlsx");
  3. Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronXL dans votre projet dès aujourd'hui avec un essai gratuit

    arrow pointer

Qu'est-ce qu'IronXL et pourquoi l'utiliser pour la création de fichiers Excel ?

IronXL est une API Excel intuitive en C# et VB qui vous permet de lire, de modifier et de créer des fichiers de tableur Excel dans .NET avec des performances exceptionnelles. Contrairement aux approches traditionnelles, il n'est pas nécessaire d'installer Microsoft Office ni d'utiliser Excel Interop, ce qui rend le déploiement plus simple et plus fiable.

IronXL prend entièrement en charge les environnements .NET 9, .NET 8, .NET Core, .NET Framework, Xamarin, Mobile, Linux, macOS et Azure.

Caractéristiques d'IronXL

  • Assistance humaine directe de notre équipe de développement .NET
  • Installation rapide avec Microsoft Visual Studio
  • GRATUIT pour le développement. Licences de $799

Comment créer et enregistrer rapidement un fichier Excel ?

Installez IronXL via NuGet ou téléchargez directement la DLL . La classe WorkBook est votre point d'entrée pour toutes les opérations Excel, tandis que la classe WorkSheet fournit des méthodes pour manipuler les feuilles individuelles — la procédure pas à pas complète commence à l'étape 1 ci-dessous.


How Do I Install the IronXL C# Library?

Installez IronXL via le gestionnaire de packages NuGet dans Visual Studio ou utilisez la console du gestionnaire de packages :

Install-Package IronXL.Excel

Accédez au Gestionnaire de packages NuGet via le menu Projet ou en cliquant avec le bouton droit sur votre projet dans l'Explorateur de solutions.

Menu Projet Visual Studio affichant l'option Gérer les packages NuGet

**Figure 3** – *Accéder au Gestionnaire de packages NuGet via le menu Projet*

Menu contextuel de l'Explorateur de solutions affichant l'option Gérer les packages NuGet

**Figure 4** – *Menu contextuel (clic droit) dans l'Explorateur de solutions*


Recherchez IronXl.Excel dans la liste des paquets et cliquez sur Installer.


Le gestionnaire de packages NuGet indique que le package IronXl.Excel est prêt à être installé.

**Figure 5** – *Installation d'IronXl.Excel via le gestionnaire de packages NuGet*

Vous pouvez également télécharger directement la DLL IronXL et l'ajouter comme référence à votre projet via l'Explorateur de solutions > Références > Rechercher IronXL.dll.

La page de téléchargement du site web d'IronXL affiche les instructions d'installation et le bouton de téléchargement.

**Figure 6** – *Télécharger la bibliothèque IronXL depuis le site officiel*

{i:(IronXL ne nécessite aucune installation de Microsoft Office ou d'Excel Interop — il fonctionne sur toute plateforme compatible .NET, y compris Windows, Linux, macOS et les environnements cloud.)}


Comment configurer mon projet .NET ?

IronXL fonctionne avec tous les types de projets .NET : applications console, applications web ASP.NET, API ou outils de bureau. L'exemple ci-dessous utilise une application Web ASP.NET, mais le processus est identique pour tous les modèles de projet.

Suivez ces étapes pour créer un site web ASP.NET :

  1. Ouvrir Visual Studio
  2. Cliquez sur Fichier &gt ; Nouveau projet
  3. Sélectionnez Web sous Visual C# dans la liste Type de projet
  4. Sélectionnez une application Web ASP.NET


    Boîte de dialogue Nouveau projet de Visual Studio avec l'option Application Web ASP.NET sélectionnée

    Figure 1Create new ASP.NET project

  5. Cliquez sur OK
  6. Sélectionner le modèle de Formulaires Web

    Sélection du modèle de projet ASP.NET affichant l'option Web Forms

    Figure 2Select Web Forms template

  7. Cliquez sur OK

Une fois votre projet prêt, installez IronXL pour commencer à créer des fichiers Excel par programmation.


How Do I Create an Excel Workbook in C#?

La création d'un nouveau classeur Excel avec IronXL ne nécessite qu'une seule ligne de code :

using IronXL;

// Create workbook with XLSX format (recommended for modern Excel)
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);

// Alternative: Create legacy XLS format for older Excel versions
WorkBook legacyWorkbook = WorkBook.Create(ExcelFileFormat.XLS);
using IronXL;

// Create workbook with XLSX format (recommended for modern Excel)
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);

// Alternative: Create legacy XLS format for older Excel versions
WorkBook legacyWorkbook = WorkBook.Create(ExcelFileFormat.XLS);
$vbLabelText   $csharpLabel

La méthode WorkBook.Create prend en charge les formats XLS (Excel 97-2003) et XLSX (Excel 2007+). XLSX est recommandé pour de meilleures performances et des fichiers plus petits.

  • XLSX : Recommandé pour toutes les versions modernes d'Excel (2007 et suivantes) — fichiers plus petits, meilleures performances
  • XLS : Format hérité pour la compatibilité avec Excel 97–2003

Comment ajouter une feuille de travail à mon classeur ?

L'ajout de feuilles de calcul est simple :

// Create a worksheet with custom name for budget tracking
WorkSheet budgetSheet = workbook.CreateWorkSheet("2020 Budget");

// Add multiple worksheets for different purposes
WorkSheet salesSheet = workbook.CreateWorkSheet("Sales Data");
WorkSheet inventorySheet = workbook.CreateWorkSheet("Inventory");

// Access existing worksheet by name
WorkSheet existingSheet = workbook.GetWorkSheet("2020 Budget");
// Create a worksheet with custom name for budget tracking
WorkSheet budgetSheet = workbook.CreateWorkSheet("2020 Budget");

// Add multiple worksheets for different purposes
WorkSheet salesSheet = workbook.CreateWorkSheet("Sales Data");
WorkSheet inventorySheet = workbook.CreateWorkSheet("Inventory");

// Access existing worksheet by name
WorkSheet existingSheet = workbook.GetWorkSheet("2020 Budget");
$vbLabelText   $csharpLabel

Un cahier d'exercices contient une ou plusieurs feuilles de travail. Chaque feuille de calcul est composée de lignes et de colonnes, avec des cellules à leurs intersections. Utilisez la méthode CreateWorkSheet pour ajouter de nouvelles feuilles à votre classeur.

  • CreateWorkSheet("name") : Ajoute une nouvelle feuille avec le nom d'onglet spécifié
  • GetWorkSheet("name") : Récupère une feuille existante par son nom
  • Les noms des feuilles doivent être uniques au sein d'un classeur.

Comment définir les valeurs des cellules dans Excel ?

Comment puis-je définir manuellement les valeurs des cellules ?

La définition des valeurs individuelles des cellules utilise une syntaxe intuitive similaire à celle d'Excel :

// Set month names in first row for annual budget spreadsheet
workSheet["A1"].Value = "January";
workSheet["B1"].Value = "February";
workSheet["C1"].Value = "March";
workSheet["D1"].Value = "April";
workSheet["E1"].Value = "May";
workSheet["F1"].Value = "June";
workSheet["G1"].Value = "July";
workSheet["H1"].Value = "August";
workSheet["I1"].Value = "September";
workSheet["J1"].Value = "October";
workSheet["K1"].Value = "November";
workSheet["L1"].Value = "December";

// Set different data types - IronXL handles conversion automatically
workSheet["A2"].Value = 1500.50m;  // Decimal for currency
workSheet["A3"].Value = DateTime.Now;  // Date values
workSheet["A4"].Value = true;  // Boolean values
// Set month names in first row for annual budget spreadsheet
workSheet["A1"].Value = "January";
workSheet["B1"].Value = "February";
workSheet["C1"].Value = "March";
workSheet["D1"].Value = "April";
workSheet["E1"].Value = "May";
workSheet["F1"].Value = "June";
workSheet["G1"].Value = "July";
workSheet["H1"].Value = "August";
workSheet["I1"].Value = "September";
workSheet["J1"].Value = "October";
workSheet["K1"].Value = "November";
workSheet["L1"].Value = "December";

// Set different data types - IronXL handles conversion automatically
workSheet["A2"].Value = 1500.50m;  // Decimal for currency
workSheet["A3"].Value = DateTime.Now;  // Date values
workSheet["A4"].Value = true;  // Boolean values
$vbLabelText   $csharpLabel

La propriété Cell.Value accepte différents types de données, notamment des chaînes de caractères, des nombres, des dates et des booléens. IronXL formate automatiquement les cellules en fonction du type de données.

Comment puis-je définir dynamiquement les valeurs des cellules ?

La définition dynamique des valeurs est idéale pour les applications basées sur les données :

// Initialize random number generator for sample data
Random r = new Random();

// Populate cells with random budget data for each month
for (int i = 2; i <= 11; i++)
{
    // Set different budget categories with increasing ranges
    workSheet[$"A{i}"].Value = r.Next(1, 1000);     // Office Supplies
    workSheet[$"B{i}"].Value = r.Next(1000, 2000);  // Utilities
    workSheet[$"C{i}"].Value = r.Next(2000, 3000);  // Rent
    workSheet[$"D{i}"].Value = r.Next(3000, 4000);  // Salaries
    workSheet[$"E{i}"].Value = r.Next(4000, 5000);  // Marketing
    workSheet[$"F{i}"].Value = r.Next(5000, 6000);  // IT Services
    workSheet[$"G{i}"].Value = r.Next(6000, 7000);  // Travel
    workSheet[$"H{i}"].Value = r.Next(7000, 8000);  // Training
    workSheet[$"I{i}"].Value = r.Next(8000, 9000);  // Insurance
    workSheet[$"J{i}"].Value = r.Next(9000, 10000); // Equipment
    workSheet[$"K{i}"].Value = r.Next(10000, 11000); // Research
    workSheet[$"L{i}"].Value = r.Next(11000, 12000); // Misc
}

// Alternative: Set range of cells with same value
workSheet["A13:L13"].Value = 0; // Initialize totals row
// Initialize random number generator for sample data
Random r = new Random();

// Populate cells with random budget data for each month
for (int i = 2; i <= 11; i++)
{
    // Set different budget categories with increasing ranges
    workSheet[$"A{i}"].Value = r.Next(1, 1000);     // Office Supplies
    workSheet[$"B{i}"].Value = r.Next(1000, 2000);  // Utilities
    workSheet[$"C{i}"].Value = r.Next(2000, 3000);  // Rent
    workSheet[$"D{i}"].Value = r.Next(3000, 4000);  // Salaries
    workSheet[$"E{i}"].Value = r.Next(4000, 5000);  // Marketing
    workSheet[$"F{i}"].Value = r.Next(5000, 6000);  // IT Services
    workSheet[$"G{i}"].Value = r.Next(6000, 7000);  // Travel
    workSheet[$"H{i}"].Value = r.Next(7000, 8000);  // Training
    workSheet[$"I{i}"].Value = r.Next(8000, 9000);  // Insurance
    workSheet[$"J{i}"].Value = r.Next(9000, 10000); // Equipment
    workSheet[$"K{i}"].Value = r.Next(10000, 11000); // Research
    workSheet[$"L{i}"].Value = r.Next(11000, 12000); // Misc
}

// Alternative: Set range of cells with same value
workSheet["A13:L13"].Value = 0; // Initialize totals row
$vbLabelText   $csharpLabel

L'interpolation de chaînes ($"A{i}") facilite la référence dynamique aux cellules. L' indexeur Range prend en charge à la fois les cellules individuelles et les plages.

Comment puis-je remplir un fichier Excel à partir d'une base de données ?

L'importation de données depuis des bases de données vers Excel est une exigence courante :

using System.Data;
using System.Data.SqlClient;
using IronXL;

// Database connection setup for retrieving sales data
string connectionString = @"Data Source=ServerName;Initial Catalog=SalesDB;Integrated Security=true";
string query = "SELECT ProductName, Quantity, UnitPrice, TotalSales FROM MonthlySales";

// Create DataSet to hold query results
DataSet salesData = new DataSet();

using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlDataAdapter adapter = new SqlDataAdapter(query, connection))
{
    // Fill DataSet with sales information
    adapter.Fill(salesData);
}

// Write headers for database columns
workSheet["A1"].Value = "Product Name";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Unit Price";
workSheet["D1"].Value = "Total Sales";

// Apply header formatting
workSheet["A1:D1"].Style.Font.Bold = true;
workSheet["A1:D1"].Style.SetBackgroundColor("#4472C4");
workSheet["A1:D1"].Style.Font.FontColor = "#FFFFFF";

// Populate Excel with database records
DataTable salesTable = salesData.Tables[0];
for (int row = 0; row < salesTable.Rows.Count; row++)
{
    int excelRow = row + 2; // Start from row 2 (after headers)

    workSheet[$"A{excelRow}"].Value = salesTable.Rows[row]["ProductName"].ToString();
    workSheet[$"B{excelRow}"].Value = Convert.ToInt32(salesTable.Rows[row]["Quantity"]);
    workSheet[$"C{excelRow}"].Value = Convert.ToDecimal(salesTable.Rows[row]["UnitPrice"]);
    workSheet[$"D{excelRow}"].Value = Convert.ToDecimal(salesTable.Rows[row]["TotalSales"]);

    // Format currency columns
    workSheet[$"C{excelRow}"].FormatString = "$#,##0.00";
    workSheet[$"D{excelRow}"].FormatString = "$#,##0.00";
}

// Add summary row with formulas
int summaryRow = salesTable.Rows.Count + 2;
workSheet[$"A{summaryRow}"].Value = "TOTAL";
workSheet[$"B{summaryRow}"].Formula = $"=SUM(B2:B{summaryRow-1})";
workSheet[$"D{summaryRow}"].Formula = $"=SUM(D2:D{summaryRow-1})";
using System.Data;
using System.Data.SqlClient;
using IronXL;

// Database connection setup for retrieving sales data
string connectionString = @"Data Source=ServerName;Initial Catalog=SalesDB;Integrated Security=true";
string query = "SELECT ProductName, Quantity, UnitPrice, TotalSales FROM MonthlySales";

// Create DataSet to hold query results
DataSet salesData = new DataSet();

using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlDataAdapter adapter = new SqlDataAdapter(query, connection))
{
    // Fill DataSet with sales information
    adapter.Fill(salesData);
}

// Write headers for database columns
workSheet["A1"].Value = "Product Name";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Unit Price";
workSheet["D1"].Value = "Total Sales";

// Apply header formatting
workSheet["A1:D1"].Style.Font.Bold = true;
workSheet["A1:D1"].Style.SetBackgroundColor("#4472C4");
workSheet["A1:D1"].Style.Font.FontColor = "#FFFFFF";

// Populate Excel with database records
DataTable salesTable = salesData.Tables[0];
for (int row = 0; row < salesTable.Rows.Count; row++)
{
    int excelRow = row + 2; // Start from row 2 (after headers)

    workSheet[$"A{excelRow}"].Value = salesTable.Rows[row]["ProductName"].ToString();
    workSheet[$"B{excelRow}"].Value = Convert.ToInt32(salesTable.Rows[row]["Quantity"]);
    workSheet[$"C{excelRow}"].Value = Convert.ToDecimal(salesTable.Rows[row]["UnitPrice"]);
    workSheet[$"D{excelRow}"].Value = Convert.ToDecimal(salesTable.Rows[row]["TotalSales"]);

    // Format currency columns
    workSheet[$"C{excelRow}"].FormatString = "$#,##0.00";
    workSheet[$"D{excelRow}"].FormatString = "$#,##0.00";
}

// Add summary row with formulas
int summaryRow = salesTable.Rows.Count + 2;
workSheet[$"A{summaryRow}"].Value = "TOTAL";
workSheet[$"B{summaryRow}"].Formula = $"=SUM(B2:B{summaryRow-1})";
workSheet[$"D{summaryRow}"].Formula = $"=SUM(D2:D{summaryRow-1})";
$vbLabelText   $csharpLabel

Cet exemple illustre la lecture de données Excel à partir de bases de données, l'application d'une mise en forme et l'utilisation de formules pour les calculs. La propriété FormatString permet une mise en forme numérique personnalisée, comme dans Excel.


Comment appliquer une mise en forme aux cellules Excel ?

Comment puis-je définir les couleurs d'arrière-plan dans Excel ?

La mise en forme des cellules améliore la lisibilité et l'attrait visuel :

// Set header row background to light gray using hex color
workSheet["A1:L1"].Style.SetBackgroundColor("#d3d3d3");

// Apply different colors for data categorization
workSheet["A2:A11"].Style.SetBackgroundColor("#E7F3FF"); // Light blue for January
workSheet["B2:B11"].Style.SetBackgroundColor("#FFF2CC"); // Light yellow for February

// Highlight important cells with bold colors
workSheet["L12"].Style.SetBackgroundColor("#FF0000"); // Red for totals
workSheet["L12"].Style.Font.FontColor = "#FFFFFF"; // White text

// Create alternating row colors for better readability
for (int row = 2; row <= 11; row++)
{
    if (row % 2 == 0)
    {
        workSheet[$"A{row}:L{row}"].Style.SetBackgroundColor("#F2F2F2");
    }
}
// Set header row background to light gray using hex color
workSheet["A1:L1"].Style.SetBackgroundColor("#d3d3d3");

// Apply different colors for data categorization
workSheet["A2:A11"].Style.SetBackgroundColor("#E7F3FF"); // Light blue for January
workSheet["B2:B11"].Style.SetBackgroundColor("#FFF2CC"); // Light yellow for February

// Highlight important cells with bold colors
workSheet["L12"].Style.SetBackgroundColor("#FF0000"); // Red for totals
workSheet["L12"].Style.Font.FontColor = "#FFFFFF"; // White text

// Create alternating row colors for better readability
for (int row = 2; row <= 11; row++)
{
    if (row % 2 == 0)
    {
        workSheet[$"A{row}:L{row}"].Style.SetBackgroundColor("#F2F2F2");
    }
}
$vbLabelText   $csharpLabel

La méthode Style.SetBackgroundColor accepte les codes de couleur hexadécimaux. Associez les couleurs de fond aux couleurs de police pour obtenir des feuilles de calcul d'aspect professionnel.

Comment créer des bordures dans Excel ?

Les frontières permettent de définir les régions de données et d'améliorer leur structure :

using IronXL;
using IronXl.Styles;

// Create header border - thick bottom line to separate from data
workSheet["A1:L1"].Style.TopBorder.SetColor("#000000");
workSheet["A1:L1"].Style.TopBorder.Type = BorderType.Thick;
workSheet["A1:L1"].Style.BottomBorder.SetColor("#000000");
workSheet["A1:L1"].Style.BottomBorder.Type = BorderType.Thick;

// Add right border to last column
workSheet["L2:L11"].Style.RightBorder.SetColor("#000000");
workSheet["L2:L11"].Style.RightBorder.Type = BorderType.Medium;

// Create bottom border for data area
workSheet["A11:L11"].Style.BottomBorder.SetColor("#000000");
workSheet["A11:L11"].Style.BottomBorder.Type = BorderType.Medium;

// Apply complete border around summary section
var summaryRange = workSheet["A12:L12"];
summaryRange.Style.TopBorder.Type = BorderType.Double;
summaryRange.Style.BottomBorder.Type = BorderType.Double;
summaryRange.Style.LeftBorder.Type = BorderType.Thin;
summaryRange.Style.RightBorder.Type = BorderType.Thin;
summaryRange.Style.SetBorderColor("#0070C0"); // Blue borders
using IronXL;
using IronXl.Styles;

// Create header border - thick bottom line to separate from data
workSheet["A1:L1"].Style.TopBorder.SetColor("#000000");
workSheet["A1:L1"].Style.TopBorder.Type = BorderType.Thick;
workSheet["A1:L1"].Style.BottomBorder.SetColor("#000000");
workSheet["A1:L1"].Style.BottomBorder.Type = BorderType.Thick;

// Add right border to last column
workSheet["L2:L11"].Style.RightBorder.SetColor("#000000");
workSheet["L2:L11"].Style.RightBorder.Type = BorderType.Medium;

// Create bottom border for data area
workSheet["A11:L11"].Style.BottomBorder.SetColor("#000000");
workSheet["A11:L11"].Style.BottomBorder.Type = BorderType.Medium;

// Apply complete border around summary section
var summaryRange = workSheet["A12:L12"];
summaryRange.Style.TopBorder.Type = BorderType.Double;
summaryRange.Style.BottomBorder.Type = BorderType.Double;
summaryRange.Style.LeftBorder.Type = BorderType.Thin;
summaryRange.Style.RightBorder.Type = BorderType.Thin;
summaryRange.Style.SetBorderColor("#0070C0"); // Blue borders
$vbLabelText   $csharpLabel

IronXL prend en charge différents types de bordures, notamment fines, moyennes, épaisses, doubles, pointillées et en pointillés. Chaque bord peut être stylisé indépendamment.


How Do I Use Excel Formulas in C#?

IronXL offre une assistance performante pour les formules avec calcul automatique :

// Use built-in aggregation functions for ranges
decimal sum = workSheet["A2:A11"].Sum();
decimal avg = workSheet["B2:B11"].Avg();
decimal max = workSheet["C2:C11"].Max();
decimal min = workSheet["D2:D11"].Min();

// Assign calculated values to cells
workSheet["A12"].Value = sum;
workSheet["B12"].Value = avg;
workSheet["C12"].Value = max;
workSheet["D12"].Value = min;

// Or use Excel formulas directly
workSheet["A12"].Formula = "=SUM(A2:A11)";
workSheet["B12"].Formula = "=AVERAGE(B2:B11)";
workSheet["C12"].Formula = "=MAX(C2:C11)";
workSheet["D12"].Formula = "=MIN(D2:D11)";

// Complex formulas with multiple functions
workSheet["E12"].Formula = "=IF(SUM(E2:E11)>50000,\"Over Budget\",\"On Track\")";
workSheet["F12"].Formula = "=SUMIF(F2:F11,\">5000\")";

// Percentage calculations
workSheet["G12"].Formula = "=G11/SUM(G2:G11)*100";
workSheet["G12"].FormatString = "0.00%";

// Ensure all formulas calculate
workSheet.EvaluateAll();
// Use built-in aggregation functions for ranges
decimal sum = workSheet["A2:A11"].Sum();
decimal avg = workSheet["B2:B11"].Avg();
decimal max = workSheet["C2:C11"].Max();
decimal min = workSheet["D2:D11"].Min();

// Assign calculated values to cells
workSheet["A12"].Value = sum;
workSheet["B12"].Value = avg;
workSheet["C12"].Value = max;
workSheet["D12"].Value = min;

// Or use Excel formulas directly
workSheet["A12"].Formula = "=SUM(A2:A11)";
workSheet["B12"].Formula = "=AVERAGE(B2:B11)";
workSheet["C12"].Formula = "=MAX(C2:C11)";
workSheet["D12"].Formula = "=MIN(D2:D11)";

// Complex formulas with multiple functions
workSheet["E12"].Formula = "=IF(SUM(E2:E11)>50000,\"Over Budget\",\"On Track\")";
workSheet["F12"].Formula = "=SUMIF(F2:F11,\">5000\")";

// Percentage calculations
workSheet["G12"].Formula = "=G11/SUM(G2:G11)*100";
workSheet["G12"].FormatString = "0.00%";

// Ensure all formulas calculate
workSheet.EvaluateAll();
$vbLabelText   $csharpLabel

La classe Range fournit des méthodes comme Sum(), Avg(), Max() et Min() pour des calculs rapides. Pour des scénarios plus complexes, utilisez la propriété Formula pour définir directement les formules Excel.

{t:(Préférez les méthodes intégrées d'IronXL .Sum(), .Avg(), .Max() et .Min() aux chaînes de formules brutes lorsque vous travaillez avec des plages — elles sont sûres en termes de type et évitent les erreurs de syntaxe des formules.)}


Comment puis-je définir les propriétés de la feuille de calcul et d'impression ?

Utilisez IronXL pour protéger les feuilles de calcul individuelles, figer les lignes et les colonnes et définir les options de format d'impression.

Comment configurer les propriétés d'une feuille de calcul ?

Protéger les feuilles de calcul et contrôler les options d'affichage :

// Protect worksheet with password to prevent unauthorized changes
workSheet.ProtectSheet("SecurePassword123");

// Freeze panes to keep headers visible while scrolling
workSheet.CreateFreezePane(0, 1); // Freeze first row
// workSheet.CreateFreezePane(1, 1); // Freeze first row and column

// Set worksheet visibility options
workSheet.ViewState = WorkSheetViewState.Visible; // or Hidden, VeryHidden

// Configure gridlines and headers
workSheet.ShowGridLines = true;
workSheet.ShowRowColHeaders = true;

// Set zoom level for better viewing
workSheet.Zoom = 85; // 85% zoom
// Protect worksheet with password to prevent unauthorized changes
workSheet.ProtectSheet("SecurePassword123");

// Freeze panes to keep headers visible while scrolling
workSheet.CreateFreezePane(0, 1); // Freeze first row
// workSheet.CreateFreezePane(1, 1); // Freeze first row and column

// Set worksheet visibility options
workSheet.ViewState = WorkSheetViewState.Visible; // or Hidden, VeryHidden

// Configure gridlines and headers
workSheet.ShowGridLines = true;
workSheet.ShowRowColHeaders = true;

// Set zoom level for better viewing
workSheet.Zoom = 85; // 85% zoom
$vbLabelText   $csharpLabel

La protection des feuilles de calcul empêche les modifications accidentelles, tandis que le gel des volets permet de garder les lignes ou colonnes importantes visibles pendant le défilement.

Feuille de calcul Excel affichant une ligne d'en-tête figée avec des données budgétaires mensuelles

**Figure 7** – *La ligne d'en-tête figée reste visible lors du défilement*

Boîte de dialogue de protection Excel exigeant un mot de passe pour modifier la feuille de calcul protégée

**Figure 8** – *La protection par mot de passe empêche les modifications non autorisées*

Comment configurer les paramètres de page et d'impression ?

Configurez des options d'impression professionnelles via IronXL :

using IronXl.Printing;

// Define print area to exclude empty cells
workSheet.SetPrintArea("A1:L12");

// Configure page orientation for wide data
workSheet.PrintSetup.PrintOrientation = PrintOrientation.Landscape;

// Set paper size for standard printing
workSheet.PrintSetup.PaperSize = PaperSize.A4;

// Adjust margins for better layout (in inches)
workSheet.PrintSetup.LeftMargin = 0.5;
workSheet.PrintSetup.RightMargin = 0.5;
workSheet.PrintSetup.TopMargin = 0.75;
workSheet.PrintSetup.BottomMargin = 0.75;

// Configure header and footer
workSheet.PrintSetup.HeaderMargin = 0.3;
workSheet.PrintSetup.FooterMargin = 0.3;

// Scale to fit on one page
workSheet.PrintSetup.FitToPage = true;
workSheet.PrintSetup.FitToHeight = 1;
workSheet.PrintSetup.FitToWidth = 1;

// Add print headers/footers
workSheet.Header.Center = "Monthly Budget Report";
workSheet.Footer.Left = DateTime.Now.ToShortDateString();
workSheet.Footer.Right = "Page &P of &N"; // Page numbering
using IronXl.Printing;

// Define print area to exclude empty cells
workSheet.SetPrintArea("A1:L12");

// Configure page orientation for wide data
workSheet.PrintSetup.PrintOrientation = PrintOrientation.Landscape;

// Set paper size for standard printing
workSheet.PrintSetup.PaperSize = PaperSize.A4;

// Adjust margins for better layout (in inches)
workSheet.PrintSetup.LeftMargin = 0.5;
workSheet.PrintSetup.RightMargin = 0.5;
workSheet.PrintSetup.TopMargin = 0.75;
workSheet.PrintSetup.BottomMargin = 0.75;

// Configure header and footer
workSheet.PrintSetup.HeaderMargin = 0.3;
workSheet.PrintSetup.FooterMargin = 0.3;

// Scale to fit on one page
workSheet.PrintSetup.FitToPage = true;
workSheet.PrintSetup.FitToHeight = 1;
workSheet.PrintSetup.FitToWidth = 1;

// Add print headers/footers
workSheet.Header.Center = "Monthly Budget Report";
workSheet.Footer.Left = DateTime.Now.ToShortDateString();
workSheet.Footer.Right = "Page &P of &N"; // Page numbering
$vbLabelText   $csharpLabel

La classe PrintSetup offre des options de configuration d'impression complètes correspondant aux paramètres d'impression d'Excel.

Aperçu avant impression Excel affichant l'orientation paysage et les paramètres de format de papier A4

**Figure 9** – *Aperçu avant impression en orientation paysage et marges personnalisées*


Comment enregistrer mon classeur Excel ?

Enregistrez votre classeur dans différents formats :

// Save as XLSX (recommended for modern Excel)
workBook.SaveAs("Budget.xlsx");

// Save as XLS for legacy compatibility
workBook.SaveAs("Budget.xls");

// Save as CSV for data exchange
workBook.SaveAsCsv("Budget.csv");

// Save as JSON for web applications
workBook.SaveAsJson("Budget.json");

// Save to stream for web downloads or cloud storage
using (var stream = new MemoryStream())
{
    workBook.SaveAs(stream);
    byte[] excelData = stream.ToArray();
    // Send to client or save to cloud
}

// Save with specific encoding for international characters
workBook.SaveAsCsv("Budget_UTF8.csv", System.Text.Encoding.UTF8);
// Save as XLSX (recommended for modern Excel)
workBook.SaveAs("Budget.xlsx");

// Save as XLS for legacy compatibility
workBook.SaveAs("Budget.xls");

// Save as CSV for data exchange
workBook.SaveAsCsv("Budget.csv");

// Save as JSON for web applications
workBook.SaveAsJson("Budget.json");

// Save to stream for web downloads or cloud storage
using (var stream = new MemoryStream())
{
    workBook.SaveAs(stream);
    byte[] excelData = stream.ToArray();
    // Send to client or save to cloud
}

// Save with specific encoding for international characters
workBook.SaveAsCsv("Budget_UTF8.csv", System.Text.Encoding.UTF8);
$vbLabelText   $csharpLabel

IronXL prend en charge plusieurs formats d'exportation, notamment XLSX, XLS, CSV, TSV et JSON. La méthode SaveAs détermine automatiquement le format à partir de l'extension du fichier.

  • XLSX / XLS : Format Excel complet avec mise en forme, formules et plusieurs feuilles
  • CSV : Format texte brut pour l'échange de données — exporte une feuille par fichier
  • JSON : Format de sortie structuré pour les API web et les pipelines de données
  • Flux : Pour la sortie en mémoire — utile pour les téléchargements Web ou le stockage dans le nuage

Résumé

Ce tutoriel a démontré comment créer des fichiers Excel en C# sans dépendances à Microsoft Office en utilisant IronXL . Vous avez appris les opérations essentielles d'Excel, notamment la création de classeurs, la manipulation des cellules, la mise en forme, l'utilisation des formules et les différentes options d'enregistrement. L'API intuitive d'IronXL simplifie l'automatisation d'Excel pour les développeurs .NET.

Pour des fonctionnalités plus avancées, explorez la fusion de cellules et la création de graphiques . Prêt à utiliser IronXL en production ? Démarrez votre essai gratuit ou consultez les options de licence .

Qu'est-ce qu'on fait maintenant ?

Maintenant que vous pouvez créer des fichiers Excel en C#, explorez ces fonctionnalités connexes d'IronXL :


Accès rapide au tutoriel

Logo de Visual Studio
### Téléchargez ce tutoriel sous forme de code source C#

Le code source C# complet permettant de créer des fichiers Excel est disponible sous forme de fichier projet Visual Studio.

Télécharger
### Explorez ce tutoriel sur GitHub

Le code source de ce projet est disponible en C# et VB.NET sur GitHub.

Utilisez ce code pour créer facilement des fichiers Excel en quelques minutes seulement. Le projet est enregistré au format Microsoft Visual Studio, mais il est compatible avec tous les environnements de développement intégrés .NET.

Créer des fichiers Excel en C# sur GitHub
Logo GitHub
icône de documentation API
### Consultez la documentation de l'API IronXL.

Explorez la documentation de référence de l'API IronXL, qui détaille toutes les fonctionnalités, les espaces de noms, les classes, les méthodes et les propriétés permettant une manipulation complète d'Excel dans .NET.

Voir la référence API

Questions Fréquemment Posées

Comment puis-je créer des fichiers Excel en C# sans utiliser Interop ?

Vous pouvez créer des fichiers Excel sans Interop en utilisant IronXL, qui fournit une API simple : WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX). Cette approche fonctionne sur n'importe quelle plateforme .NET sans nécessiter l'installation de Microsoft Office.

Quelles plateformes prennent en charge la création de fichiers Excel avec C# ?

IronXL prend en charge la création de fichiers Excel sur .NET 10, .NET 9, .NET 8, .NET Core, .NET Framework 4.6.2+, fonctionnant sur les environnements Windows, macOS, Linux, Docker, Azure et AWS.

Comment installer une bibliothèque C# pour la génération Excel ?

Installez IronXL via le Gestionnaire de Packages NuGet dans Visual Studio, utilisez la commande PM> Install-Package IronXL.Excel, ou téléchargez directement depuis nuget.org.

Comment créer un nouveau classeur Excel de manière programmatique ?

Créez un classeur en utilisant IronXL avec WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX), puis ajoutez des feuilles de travail en utilisant workbook.CreateWorkSheet("SheetName").

Comment puis-je définir les valeurs des cellules dans une feuille de calcul Excel en utilisant C# ?

Définissez les valeurs des cellules dans IronXL en utilisant une syntaxe intuitive : worksheet["A1"].Value = "Hello World" ou définissez des plages : worksheet["A1:A10"].Value = 100.

Puis-je appliquer du formatage aux cellules Excel de manière programmatique ?

Oui, IronXL prend en charge un formatage complet, y compris les couleurs de fond (cell.Style.SetBackgroundColor("#FF0000")), les bordures, les polices, et les formats de nombre.

Comment utiliser les formules Excel en C# ?

Appliquez les formules en utilisant la propriété Formula de IronXL : worksheet["A1"].Formula = "=SUM(B1:B10)", ou utilisez des méthodes intégrées comme range.Sum(), range.Avg().

Comment puis-je protéger une feuille de calcul Excel avec un mot de passe ?

Protégez les feuilles de calcul dans IronXL en utilisant worksheet.ProtectSheet("YourPassword") pour prévenir les modifications non autorisées.

Comment configurer les paramètres d'impression pour les fichiers Excel ?

Définissez les propriétés d'impression en utilisant le PrintSetup de IronXL : worksheet.PrintSetup.PrintOrientation = PrintOrientation.Landscape et worksheet.SetPrintArea("A1:Z100").

Comment enregistrer un classeur Excel dans différents formats ?

Enregistrez les classeurs en utilisant la méthode SaveAs de IronXL : workbook.SaveAs("file.xlsx") pour XLSX, ou utilisez SaveAsCsv(), SaveAsJson() pour d'autres formats.

Comment remplir une feuille Excel avec des données provenant d'une base de données ?

Utilisez IronXL pour remplir les feuilles de travail en récupérant les données d'une base de données et en les définissant dans les cellules en utilisant des méthodes comme worksheet["A1"].Value = dataFromDatabase.

Comment puis-je implémenter des volets figés dans une feuille Excel en utilisant C# ?

Figez les volets dans les feuilles de travail en utilisant IronXL avec worksheet.FreezePanes(1, 1) pour verrouiller la première ligne et la première colonne pour une navigation plus facile.

Jacob Mellor, Directeur technique @ Team Iron
Directeur technique

Jacob Mellor est directeur de la technologie chez Iron Software et un ingénieur visionnaire pionnier de la technologie C# PDF. En tant que développeur à l'origine de la base de code centrale d'Iron Software, il a façonné l'architecture des produits de l'entreprise depuis sa création, ...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 1,913,565 | Version : 2026.3 vient de sortir
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ? PM > Install-Package IronXL.Excel
exécuter un échantillon regarder vos données devenir une feuille de calcul.