Passer au contenu du pied de page
UTILISATION D'IRONXL

C# Exportation d'une liste d'objets vers Excel avec IronXL.Excel

L'exportation de collections d'objets vers des fichiers Excel est une exigence fondamentale dans les applications d'entreprise. Que ce soit pour générer des rapports, exporter des données pour partager des informations ou créer des feuilles de calcul Excel pour des sauvegardes, les développeurs ont besoin d'une méthode fiable pour transformer des objets List en tableaux professionnels. IronXL fournit une solution rationalisée qui élimine les complexités traditionnelles de la création de fichiers Excel dans .NET, .NET Core, ou le .NET Framework.

Pourquoi l'exportation de listes vers des fichiers Excel est-elle complexe ?

Les méthodes traditionnelles d'exportation de données vers Excel impliquent souvent Microsoft Office Interop, ce qui nécessite l'installation de MS Excel sur le serveur et engendre des difficultés de déploiement. Le peuplement manuel cellule par cellule par réflexion est long et sujet aux erreurs. Les puissantes fonctions d'importation de données d'IronXL résolvent ces problèmes grâce à un mappage intelligent des propriétés entre les sources de données et les en-têtes de colonnes Excel, sans nécessiter MS Office ou un code de réflexion complexe.

La bibliothèque gère automatiquement la conversion de type, prend en charge les objets imbriqués et maintient l'intégrité des données dans différents formats tels que les fichiers CSV et XLSX. Pour les développeurs travaillant avec les opérations C# Excel sans Interop, IronXL est le choix idéal pour les projets .NET modernes qui ont besoin de capacités robustes de génération Excel et d'importation/exportation de données.

Comment exporter des données de liste simples vers Excel ?

Commencer avec IronXL nécessite une configuration minimale. Tout d'abord, installez la bibliothèque via la console du Gestionnaire de packages NuGet :

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

Dans l'exemple de code suivant, nous verrons comment exporter des données à l'aide d'un modèle Employee :

using IronXL;
using System;
using System.Collections.Generic;
using System.Data;

public class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Department { get; set; }
    public decimal Salary { get; set; }
    public DateTime HireDate { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        // Create sample data for Excel export
        var employees = new List<Employee>
        {
            new Employee { Id = 1, Name = "Alice Johnson", Department = "Engineering",
                           Salary = 95000, HireDate = new DateTime(2020, 3, 15) },
            new Employee { Id = 2, Name = "Bob Smith", Department = "Marketing",
                           Salary = 75000, HireDate = new DateTime(2021, 7, 1) },
            new Employee { Id = 3, Name = "Carol Williams", Department = "Engineering",
                           Salary = 105000, HireDate = new DateTime(2019, 11, 20) }
        };
        // Convert the list of employees to a DataTable
        DataTable dataTable = new DataTable();
        dataTable.Columns.Add("Id", typeof(int));
        dataTable.Columns.Add("Name", typeof(string));
        dataTable.Columns.Add("Department", typeof(string));
        dataTable.Columns.Add("Salary", typeof(decimal));
        dataTable.Columns.Add("HireDate", typeof(DateTime));
        foreach (var employee in employees)
        {
            dataTable.Rows.Add(employee.Id, employee.Name, employee.Department, employee.Salary, employee.HireDate);
        }
        // Export DataTable to Excel spreadsheet
        var workbook = new WorkBook();
        var worksheet = workbook.CreateWorkSheet("Employees");
        // Populate the worksheet
        for (int i = 0; i < dataTable.Columns.Count; i++)
        {
            worksheet.SetCellValue(0, i, dataTable.Columns[i].ColumnName); // Add column headers
        }
        for (int i = 0; i < dataTable.Rows.Count; i++)
        {
            for (int j = 0; j < dataTable.Columns.Count; j++)
            {
                worksheet.SetCellValue(i + 1, j, dataTable.Rows[i][j]); // Add data rows
            }
        }
        // Save as XLSX file
        workbook.SaveAs("EmployeeReport.xlsx");
    }
}
using IronXL;
using System;
using System.Collections.Generic;
using System.Data;

public class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Department { get; set; }
    public decimal Salary { get; set; }
    public DateTime HireDate { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        // Create sample data for Excel export
        var employees = new List<Employee>
        {
            new Employee { Id = 1, Name = "Alice Johnson", Department = "Engineering",
                           Salary = 95000, HireDate = new DateTime(2020, 3, 15) },
            new Employee { Id = 2, Name = "Bob Smith", Department = "Marketing",
                           Salary = 75000, HireDate = new DateTime(2021, 7, 1) },
            new Employee { Id = 3, Name = "Carol Williams", Department = "Engineering",
                           Salary = 105000, HireDate = new DateTime(2019, 11, 20) }
        };
        // Convert the list of employees to a DataTable
        DataTable dataTable = new DataTable();
        dataTable.Columns.Add("Id", typeof(int));
        dataTable.Columns.Add("Name", typeof(string));
        dataTable.Columns.Add("Department", typeof(string));
        dataTable.Columns.Add("Salary", typeof(decimal));
        dataTable.Columns.Add("HireDate", typeof(DateTime));
        foreach (var employee in employees)
        {
            dataTable.Rows.Add(employee.Id, employee.Name, employee.Department, employee.Salary, employee.HireDate);
        }
        // Export DataTable to Excel spreadsheet
        var workbook = new WorkBook();
        var worksheet = workbook.CreateWorkSheet("Employees");
        // Populate the worksheet
        for (int i = 0; i < dataTable.Columns.Count; i++)
        {
            worksheet.SetCellValue(0, i, dataTable.Columns[i].ColumnName); // Add column headers
        }
        for (int i = 0; i < dataTable.Rows.Count; i++)
        {
            for (int j = 0; j < dataTable.Columns.Count; j++)
            {
                worksheet.SetCellValue(i + 1, j, dataTable.Rows[i][j]); // Add data rows
            }
        }
        // Save as XLSX file
        workbook.SaveAs("EmployeeReport.xlsx");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Cet exemple de code montre comment exporter des données d'une List<Employee> vers Excel. List<Employee> utilisation d'IronXL. Il convertit d'abord la liste des employés en un DataTable, puis inscrit manuellement les en-têtes de colonnes et les lignes dans une feuille de calcul. IronXL gère automatiquement les types de données tels que int, string et DateTime, ce qui garantit un formatage propre dans la feuille de calcul générée. Enfin, la fonction d'enregistrement Excel produit un fichier XLSX, qui peut être enregistré sous EmployeeReport.xlsx, offrant ainsi un moyen simple et efficace de transformer des données C# structurées en un rapport Excel professionnel.

C# Exporter une liste d'objets vers Excel avec IronXL : Image 1 - Image 1 sur 3 liées à C# Exporter une liste d'objets vers Excel avec IronXL

Comment exporter des objets métier complexes ?

Les applications .NET du monde réel impliquent souvent des structures de données plus complexes. Voici comment exporter un inventaire de produits avec des propriétés imbriquées, en utilisant C# pour exporter une liste d'objets vers Excel :

using IronXL;
using System;
using System.Collections.Generic;
using System.Data;

public class Product
{
    public string SKU { get; set; }
    public string ProductName { get; set; }
    public string Category { get; set; }
    public decimal Price { get; set; }
    public int StockLevel { get; set; }
    public bool IsActive { get; set; }
    public DateTime LastRestocked { get; set; }
    public decimal CalculatedValue => Price * StockLevel;
}

class Program
{
    static void Main(string[] args)
    {
        // Generate product inventory list for Excel export
        var products = new List<Product>
        {
            new Product
            {
                SKU = "TECH-001",
                ProductName = "Wireless Mouse",
                Category = "Electronics",
                Price = 29.99m,
                StockLevel = 150,
                IsActive = true,
                LastRestocked = DateTime.Now.AddDays(-5)
            },
            new Product
            {
                SKU = "TECH-002",
                ProductName = "Mechanical Keyboard",
                Category = "Electronics",
                Price = 89.99m,
                StockLevel = 75,
                IsActive = true,
                LastRestocked = DateTime.Now.AddDays(-12)
            },
            new Product
            {
                SKU = "OFF-001",
                ProductName = "Desk Organizer",
                Category = "Office Supplies",
                Price = 15.99m,
                StockLevel = 0,
                IsActive = false,
                LastRestocked = DateTime.Now.AddMonths(-1)
            }
        };

        // Create Excel workbook and import collection data
        var workbook = WorkBook.Create();
        var worksheet = workbook.CreateWorkSheet("Inventory");

        // Export generic list to Excel with headers
        var dataTable = new DataTable();
        dataTable.Columns.Add("SKU", typeof(string));
        dataTable.Columns.Add("ProductName", typeof(string));
        dataTable.Columns.Add("Category", typeof(string));
        dataTable.Columns.Add("Price", typeof(decimal));
        dataTable.Columns.Add("StockLevel", typeof(int));
        dataTable.Columns.Add("IsActive", typeof(bool));
        dataTable.Columns.Add("LastRestocked", typeof(DateTime));
        dataTable.Columns.Add("CalculatedValue", typeof(decimal));

        foreach (var product in products)
        {
            dataTable.Rows.Add(
                product.SKU,
                product.ProductName,
                product.Category,
                product.Price,
                product.StockLevel,
                product.IsActive,
                product.LastRestocked,
                product.CalculatedValue
            );
        }

        // Set header values
        worksheet["A1"].Value = "SKU";
        worksheet["B1"].Value = "ProductName";
        worksheet["C1"].Value = "Category";
        worksheet["D1"].Value = "Price";
        worksheet["E1"].Value = "StockLevel";
        worksheet["F1"].Value = "IsActive";
        worksheet["G1"].Value = "LastRestocked";
        worksheet["H1"].Value = "CalculatedValue";

        int row = 2;
        foreach (DataRow dataRow in dataTable.Rows)
        {
            worksheet[$"A{row}"].Value = dataRow["SKU"];
            worksheet[$"B{row}"].Value = dataRow["ProductName"];
            worksheet[$"C{row}"].Value = dataRow["Category"];
            worksheet[$"D{row}"].Value = dataRow["Price"];
            worksheet[$"E{row}"].Value = dataRow["StockLevel"];
            worksheet[$"F{row}"].Value = dataRow["IsActive"];
            worksheet[$"G{row}"].Value = dataRow["LastRestocked"];
            worksheet[$"H{row}"].Value = dataRow["CalculatedValue"];
            row++;
        }

        // Auto-fit columns for optimal display
        for (int col = 0; col < 8; col++)
        {
            worksheet.AutoSizeColumn(col);
        }

        // Save as Excel XLSX format
        workbook.SaveAs("ProductInventory.xlsx");
    }
}
using IronXL;
using System;
using System.Collections.Generic;
using System.Data;

public class Product
{
    public string SKU { get; set; }
    public string ProductName { get; set; }
    public string Category { get; set; }
    public decimal Price { get; set; }
    public int StockLevel { get; set; }
    public bool IsActive { get; set; }
    public DateTime LastRestocked { get; set; }
    public decimal CalculatedValue => Price * StockLevel;
}

class Program
{
    static void Main(string[] args)
    {
        // Generate product inventory list for Excel export
        var products = new List<Product>
        {
            new Product
            {
                SKU = "TECH-001",
                ProductName = "Wireless Mouse",
                Category = "Electronics",
                Price = 29.99m,
                StockLevel = 150,
                IsActive = true,
                LastRestocked = DateTime.Now.AddDays(-5)
            },
            new Product
            {
                SKU = "TECH-002",
                ProductName = "Mechanical Keyboard",
                Category = "Electronics",
                Price = 89.99m,
                StockLevel = 75,
                IsActive = true,
                LastRestocked = DateTime.Now.AddDays(-12)
            },
            new Product
            {
                SKU = "OFF-001",
                ProductName = "Desk Organizer",
                Category = "Office Supplies",
                Price = 15.99m,
                StockLevel = 0,
                IsActive = false,
                LastRestocked = DateTime.Now.AddMonths(-1)
            }
        };

        // Create Excel workbook and import collection data
        var workbook = WorkBook.Create();
        var worksheet = workbook.CreateWorkSheet("Inventory");

        // Export generic list to Excel with headers
        var dataTable = new DataTable();
        dataTable.Columns.Add("SKU", typeof(string));
        dataTable.Columns.Add("ProductName", typeof(string));
        dataTable.Columns.Add("Category", typeof(string));
        dataTable.Columns.Add("Price", typeof(decimal));
        dataTable.Columns.Add("StockLevel", typeof(int));
        dataTable.Columns.Add("IsActive", typeof(bool));
        dataTable.Columns.Add("LastRestocked", typeof(DateTime));
        dataTable.Columns.Add("CalculatedValue", typeof(decimal));

        foreach (var product in products)
        {
            dataTable.Rows.Add(
                product.SKU,
                product.ProductName,
                product.Category,
                product.Price,
                product.StockLevel,
                product.IsActive,
                product.LastRestocked,
                product.CalculatedValue
            );
        }

        // Set header values
        worksheet["A1"].Value = "SKU";
        worksheet["B1"].Value = "ProductName";
        worksheet["C1"].Value = "Category";
        worksheet["D1"].Value = "Price";
        worksheet["E1"].Value = "StockLevel";
        worksheet["F1"].Value = "IsActive";
        worksheet["G1"].Value = "LastRestocked";
        worksheet["H1"].Value = "CalculatedValue";

        int row = 2;
        foreach (DataRow dataRow in dataTable.Rows)
        {
            worksheet[$"A{row}"].Value = dataRow["SKU"];
            worksheet[$"B{row}"].Value = dataRow["ProductName"];
            worksheet[$"C{row}"].Value = dataRow["Category"];
            worksheet[$"D{row}"].Value = dataRow["Price"];
            worksheet[$"E{row}"].Value = dataRow["StockLevel"];
            worksheet[$"F{row}"].Value = dataRow["IsActive"];
            worksheet[$"G{row}"].Value = dataRow["LastRestocked"];
            worksheet[$"H{row}"].Value = dataRow["CalculatedValue"];
            row++;
        }

        // Auto-fit columns for optimal display
        for (int col = 0; col < 8; col++)
        {
            worksheet.AutoSizeColumn(col);
        }

        // Save as Excel XLSX format
        workbook.SaveAs("ProductInventory.xlsx");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Ce code montre comment générer un rapport d'inventaire de produits dynamique dans Excel à l'aide d'IronXL. Il construit une liste d'objets Product contenant des détails tels que le SKU, le prix, le niveau de stock et la date de réapprovisionnement, puis calcule une CalculatedValue dérivée pour chaque article. Les données sont converties en DataTable, écrites dans une feuille de calcul Excel avec des en-têtes, et formatées pour la lisibilité en utilisant des colonnes de taille automatique. IronXL gère parfaitement les types de données tels que les décimales, les booléens et les dates, garantissant ainsi des résultats de type tableur de qualité professionnelle. Le résultat, ProductInventory.xlsx, fournit une exportation d'inventaire propre et axée sur les données, idéale pour les rapports commerciaux ou les analyses.

C# Exportation d'une liste d'objets vers Excel avec IronXL : Image 2 - Exemple de sortie pour des objets commerciaux complexes

Comment ajouter une mise en forme professionnelle ?

Transformez des exportations de base en rapports soignés avec les capacités de stylisme complètes d'IronXL :

// After importing data, apply professional formatting
var headerRange = worksheet["A1:H1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.BackgroundColor = "#4472C4";
headerRange.Style.Font.Color = "#FFFFFF";
// Format currency columns for Excel export
var priceColumn = worksheet["D2:D100"];
priceColumn.Style.NumberFormat = "$#,##0.00";
// Apply conditional formatting to highlight business metrics
for (int row = 2; row <= products.Count + 1; row++)
{
    var stockCell = worksheet[$"E{row}"];
    if (stockCell.IntValue < 10)
    {
        stockCell.Style.BackgroundColor = "#FF6B6B";
    }
}
// Export formatted list to Excel file
workbook.SaveAs("FormattedInventory.xlsx");
// After importing data, apply professional formatting
var headerRange = worksheet["A1:H1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.BackgroundColor = "#4472C4";
headerRange.Style.Font.Color = "#FFFFFF";
// Format currency columns for Excel export
var priceColumn = worksheet["D2:D100"];
priceColumn.Style.NumberFormat = "$#,##0.00";
// Apply conditional formatting to highlight business metrics
for (int row = 2; row <= products.Count + 1; row++)
{
    var stockCell = worksheet[$"E{row}"];
    if (stockCell.IntValue < 10)
    {
        stockCell.Style.BackgroundColor = "#FF6B6B";
    }
}
// Export formatted list to Excel file
workbook.SaveAs("FormattedInventory.xlsx");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Ces options de mise en forme transforment les données brutes exportées en rapports prêts à être présentés aux dirigeants. Les en-têtes en gras avec des couleurs de fond créent une hiérarchie visuelle lors de l'exportation des collections vers Excel. Le formatage des nombres garantit un affichage professionnel des valeurs monétaires. La mise en forme conditionnelle met en évidence les indicateurs clés de performance de l'entreprise, tels que les faibles niveaux de stock, rendant ainsi la feuille de calcul Excel exportée immédiatement exploitable pour la gestion des stocks. Apprenez-en plus sur le formatage avancé des cellules et les styles de bordure pour améliorer encore vos exportations.

C# Exportation d'une liste d'objets vers Excel avec IronXL : Image 3 - Feuille de calcul formatée

Commencez dès aujourd'hui à exporter vos listes vers Excel.

IronXL transforme la tâche complexe de génération de fichiers Excel en un code simple et facile à maintenir. Sa méthode intelligente ImportData élimine le besoin de dépendances Microsoft Office tout en fournissant des résultats professionnels qui répondent aux exigences de l'entreprise. La bibliothèque offre un ensemble complet de fonctionnalités permettant de gérer toutes les opérations, des exportations de listes basiques aux transformations de données complexes avec mise en forme et style.

Commencez avec IronXL maintenant.
green arrow pointer

Prêt à optimiser vos exportations Excel C# ? Téléchargez IronXL maintenant et découvrez avec quelle facilité vous pouvez convertir des objets de liste en Excel dans vos applications .NET. Pour les déploiements de production, découvrez nos options de licence flexibles qui s'adaptent à vos besoins. Visitez notre documentation complète pour plus de tutoriels et d'exemples.

Questions Fréquemment Posées

Comment puis-je exporter une liste C# vers un fichier Excel ?

Vous pouvez exporter une liste C# vers un fichier Excel à l'aide de la méthode ImportData d'IronXL, qui simplifie le processus sans nécessiter Office Interop.

Pourquoi devrais-je utiliser IronXL pour exporter des données vers Excel ?

IronXL fournit une solution rationalisée pour l'exportation de données vers Excel en éliminant les complexités traditionnelles et en offrant une intégration facile avec .NET, .NET Core ou .NET Framework.

Ai-je besoin d'installer Microsoft Office pour utiliser IronXL ?

Non, IronXL ne nécessite pas l'installation de Microsoft Office. Il fonctionne de manière indépendante et vous permet de créer et de manipuler des fichiers Excel par programmation.

IronXL peut-il gérer des objets complexes dans des listes lors de l'exportation vers Excel ?

Oui, IronXL peut gérer à la fois des listes génériques et des objets complexes, ce qui offre une certaine flexibilité dans l'exportation de divers types de données vers Excel.

IronXL est-il compatible avec .NET Core?

Oui, IronXL est compatible avec .NET Core, ainsi qu'avec .NET et .NET Framework, ce qui le rend polyvalent pour différents environnements de développement.

Quel est l'avantage d'utiliser la méthode ImportData d'IronXL ?

La méthode ImportData d'IronXL simplifie le processus de transfert des données des listes C# vers Excel, réduisant ainsi la complexité du code et améliorant la productivité.

Puis-je créer des feuilles de calcul professionnelles à l'aide d'IronXL ?

Absolument, IronXL permet aux développeurs de transformer les listes Intégrez facilement des objets dans des feuilles de calcul professionnelles, adaptées aux rapports, au partage de données ou aux sauvegardes.

Existe-t-il des exemples de code disponibles pour l'utilisation d'IronXL ?

Oui, la documentation et les tutoriels d'IronXL fournissent des exemples de code simples pour exporter à la fois des listes génériques et des objets complexes vers Excel.

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