Passer au contenu du pied de page
UTILISATION D'IRONXL

C# Exporter un objet de la liste vers Excel

L'exportation de collections d'objets vers des fichiers Excel est une exigence fondamentale dans les applications d'entreprise. Qu'il s'agisse de générer des rapports, de partager des informations sur les données ou de créer des feuilles de calcul Excel pour les sauvegardes, les développeurs ont besoin d'un moyen fiable de transformer les objets List<t> en feuilles de calcul professionnelles. IronXL propose une solution qui élimine les difficultés traditionnelles liées à la création de fichiers Excel sous .NET 10, .NET Core ou .NET Framework , sans nécessiter Microsoft Office sur le serveur.

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 fonctionnalités 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 ni 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 sur des opérations Excel en C# sans interopérabilité , IronXL est le choix idéal pour les projets .NET modernes qui nécessitent une génération Excel fiable et des capacités d'importation/exportation de données.

Comment IronXL simplifie-t-il l'exportation d'objets ?

IronXL supprime le besoin d'enregistrement COM, de licences Office et d'assemblages d'interopérabilité. Lorsque vous exportez un List<t> vers Excel, la bibliothèque :

  • Associe directement les propriétés des objets aux en-têtes de colonnes.
  • Convertit les types .NET (DateTime, decimal, bool) en leurs représentations Excel correctes
  • Permet un contrôle précis des valeurs, des plages et de la mise en forme des cellules.
  • Enregistre les résultats aux formats XLSX, XLS, CSV et autres en une seule opération.

Cette approche vous permet d'obtenir des feuilles de calcul propres et professionnelles sans avoir à écrire des centaines de lignes de code répétitif. Vous pouvez également réimporter des données depuis Excel ultérieurement, ce qui simplifie les flux de travail aller-retour.

Comment installer IronXL?

La prise en main d' IronXL ne nécessite qu'une configuration minimale. Installez la bibliothèque via la console du gestionnaire de packages NuGet :

Install-Package IronXL
Install-Package IronXL
SHELL

Ou utilisez le .NET CLI :

dotnet add package IronXL
dotnet add package IronXL
SHELL

Une fois l'installation terminée, ajoutez la directive using IronXL; à votre fichier. Aucune dépendance Office supplémentaire ni installation d'environnement d'exécution n'est requise.

Comment exporter une liste simple vers Excel ?

L'exemple suivant illustre l'exportation d'une liste d'objets Employee vers un fichier XLSX à l'aide d'instructions de niveau supérieur, le style privilégié dans .NET 10 :

using IronXL;
using System.Data;

// Define the Employee model
record Employee(int Id, string Name, string Department, decimal Salary, DateTime HireDate);

// Create sample employee data
List<Employee> employees =
[
    new(1, "Alice Johnson", "Engineering", 95000, new DateTime(2020, 3, 15)),
    new(2, "Bob Smith",    "Marketing",   75000, new DateTime(2021, 7, 1)),
    new(3, "Carol Williams","Engineering",105000, new DateTime(2019, 11, 20))
];

// Build a DataTable from the list
DataTable dataTable = new();
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 emp in employees)
    dataTable.Rows.Add(emp.Id, emp.Name, emp.Department, emp.Salary, emp.HireDate);

// Create an IronXL workbook and worksheet
WorkBook workbook  = new();
WorkSheet worksheet = workbook.CreateWorkSheet("Employees");

// Write headers
for (int col = 0; col < dataTable.Columns.Count; col++)
    worksheet.SetCellValue(0, col, dataTable.Columns[col].ColumnName);

// Write data rows
for (int row = 0; row < dataTable.Rows.Count; row++)
    for (int col = 0; col < dataTable.Columns.Count; col++)
        worksheet.SetCellValue(row + 1, col, dataTable.Rows[row][col]);

// Save as XLSX
workbook.SaveAs("EmployeeReport.xlsx");
Console.WriteLine("EmployeeReport.xlsx saved.");
using IronXL;
using System.Data;

// Define the Employee model
record Employee(int Id, string Name, string Department, decimal Salary, DateTime HireDate);

// Create sample employee data
List<Employee> employees =
[
    new(1, "Alice Johnson", "Engineering", 95000, new DateTime(2020, 3, 15)),
    new(2, "Bob Smith",    "Marketing",   75000, new DateTime(2021, 7, 1)),
    new(3, "Carol Williams","Engineering",105000, new DateTime(2019, 11, 20))
];

// Build a DataTable from the list
DataTable dataTable = new();
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 emp in employees)
    dataTable.Rows.Add(emp.Id, emp.Name, emp.Department, emp.Salary, emp.HireDate);

// Create an IronXL workbook and worksheet
WorkBook workbook  = new();
WorkSheet worksheet = workbook.CreateWorkSheet("Employees");

// Write headers
for (int col = 0; col < dataTable.Columns.Count; col++)
    worksheet.SetCellValue(0, col, dataTable.Columns[col].ColumnName);

// Write data rows
for (int row = 0; row < dataTable.Rows.Count; row++)
    for (int col = 0; col < dataTable.Columns.Count; col++)
        worksheet.SetCellValue(row + 1, col, dataTable.Rows[row][col]);

// Save as XLSX
workbook.SaveAs("EmployeeReport.xlsx");
Console.WriteLine("EmployeeReport.xlsx saved.");
$vbLabelText   $csharpLabel

Cet exemple convertit un List<Employee> en un DataTable, puis écrit les en-têtes et les lignes dans une feuille de calcul IronXL . IronXL gère automatiquement les types de données comme int, string et DateTime, garantissant ainsi une mise en forme propre dans la feuille de calcul générée. La fonction d'enregistrement d'Excel produit un fichier XLSX prêt à être ouvert dans n'importe quelle application tableur.

C# Exporter une liste d'objets vers Excel avec IronXL: Image 1 - Image 1 sur 3 relative à l'exportation d'une liste d'objets C# 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. L'exemple suivant génère un rapport d'inventaire de produits avec une propriété calculée :

using IronXL;
using System.Data;

// Define the Product model with a computed property
record Product(
    string SKU,
    string ProductName,
    string Category,
    decimal Price,
    int StockLevel,
    bool IsActive,
    DateTime LastRestocked)
{
    public decimal CalculatedValue => Price * StockLevel;
}

// Build the product list
List<Product> products =
[
    new("TECH-001", "Wireless Mouse",      "Electronics",     29.99m, 150, true,  DateTime.Now.AddDays(-5)),
    new("TECH-002", "Mechanical Keyboard", "Electronics",     89.99m,  75, true,  DateTime.Now.AddDays(-12)),
    new("OFF-001",  "Desk Organizer",      "Office Supplies", 15.99m,   0, false, DateTime.Now.AddMonths(-1))
];

// Populate a DataTable
DataTable dt = new();
dt.Columns.Add("SKU",             typeof(string));
dt.Columns.Add("ProductName",     typeof(string));
dt.Columns.Add("Category",        typeof(string));
dt.Columns.Add("Price",           typeof(decimal));
dt.Columns.Add("StockLevel",      typeof(int));
dt.Columns.Add("IsActive",        typeof(bool));
dt.Columns.Add("LastRestocked",   typeof(DateTime));
dt.Columns.Add("CalculatedValue", typeof(decimal));

foreach (var p in products)
    dt.Rows.Add(p.SKU, p.ProductName, p.Category, p.Price,
                p.StockLevel, p.IsActive, p.LastRestocked, p.CalculatedValue);

// Create the workbook
WorkBook  wb = WorkBook.Create();
WorkSheet ws = wb.CreateWorkSheet("Inventory");

// Write column headers
string[] headers = ["SKU","ProductName","Category","Price",
                    "StockLevel","IsActive","LastRestocked","CalculatedValue"];
for (int col = 0; col < headers.Length; col++)
    ws.SetCellValue(0, col, headers[col]);

// Write data rows
for (int row = 0; row < dt.Rows.Count; row++)
    for (int col = 0; col < dt.Columns.Count; col++)
        ws.SetCellValue(row + 1, col, dt.Rows[row][col]);

// Auto-size columns for readability
for (int col = 0; col < headers.Length; col++)
    ws.AutoSizeColumn(col);

wb.SaveAs("ProductInventory.xlsx");
Console.WriteLine("ProductInventory.xlsx saved.");
using IronXL;
using System.Data;

// Define the Product model with a computed property
record Product(
    string SKU,
    string ProductName,
    string Category,
    decimal Price,
    int StockLevel,
    bool IsActive,
    DateTime LastRestocked)
{
    public decimal CalculatedValue => Price * StockLevel;
}

// Build the product list
List<Product> products =
[
    new("TECH-001", "Wireless Mouse",      "Electronics",     29.99m, 150, true,  DateTime.Now.AddDays(-5)),
    new("TECH-002", "Mechanical Keyboard", "Electronics",     89.99m,  75, true,  DateTime.Now.AddDays(-12)),
    new("OFF-001",  "Desk Organizer",      "Office Supplies", 15.99m,   0, false, DateTime.Now.AddMonths(-1))
];

// Populate a DataTable
DataTable dt = new();
dt.Columns.Add("SKU",             typeof(string));
dt.Columns.Add("ProductName",     typeof(string));
dt.Columns.Add("Category",        typeof(string));
dt.Columns.Add("Price",           typeof(decimal));
dt.Columns.Add("StockLevel",      typeof(int));
dt.Columns.Add("IsActive",        typeof(bool));
dt.Columns.Add("LastRestocked",   typeof(DateTime));
dt.Columns.Add("CalculatedValue", typeof(decimal));

foreach (var p in products)
    dt.Rows.Add(p.SKU, p.ProductName, p.Category, p.Price,
                p.StockLevel, p.IsActive, p.LastRestocked, p.CalculatedValue);

// Create the workbook
WorkBook  wb = WorkBook.Create();
WorkSheet ws = wb.CreateWorkSheet("Inventory");

// Write column headers
string[] headers = ["SKU","ProductName","Category","Price",
                    "StockLevel","IsActive","LastRestocked","CalculatedValue"];
for (int col = 0; col < headers.Length; col++)
    ws.SetCellValue(0, col, headers[col]);

// Write data rows
for (int row = 0; row < dt.Rows.Count; row++)
    for (int col = 0; col < dt.Columns.Count; col++)
        ws.SetCellValue(row + 1, col, dt.Rows[row][col]);

// Auto-size columns for readability
for (int col = 0; col < headers.Length; col++)
    ws.AutoSizeColumn(col);

wb.SaveAs("ProductInventory.xlsx");
Console.WriteLine("ProductInventory.xlsx saved.");
$vbLabelText   $csharpLabel

Ce code construit une liste d'objets Product contenant des détails comme le SKU, le prix, le niveau de stock et la date de réapprovisionnement, puis calcule un CalculatedValue dérivé pour chaque article. IronXL gère 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 basée sur les données, adaptée aux rapports ou analyses d'entreprise. Vous pouvez également exporter directement un DataTable vers Excel si votre code source existant fonctionne déjà avec des objets DataTable.

C# Exporter une liste d'objets vers Excel avec IronXL: Image 2 - Exemple de sortie pour des objets métier complexes

Comment contrôler la largeur des colonnes et la hauteur des lignes ?

Après avoir saisi les données, vous pouvez contrôler par programmation la mise en page visuelle de la feuille de calcul. La méthode AutoSizeColumn d'IronXL ajuste chaque colonne à son contenu. Vous pouvez également définir explicitement la largeur des colonnes ou ajouter et supprimer des lignes et des colonnes pour ajuster la structure de la feuille avant de l'enregistrer.

Pour la hauteur des lignes, IronXL expose des propriétés au niveau de la ligne qui vous permettent de définir une hauteur fixe en pixels, ce qui est utile lorsque la feuille de calcul est destinée à être imprimée ou partagée au format PDF. Un dimensionnement uniforme des colonnes et des lignes améliore également la lisibilité lorsque le fichier Excel est ouvert sur différentes résolutions d'écran ou imprimé à différentes échelles, ce qui est particulièrement important pour les rapports distribués à des parties prenantes externes.

Comment ajouter une mise en forme professionnelle ?

La mise en forme transforme les exportations de base en rapports soignés. L'API de style d'IronXL expose les paramètres de police, de couleur, de bordure et de format numérique sur n'importe quelle cellule ou plage :

using IronXL;

WorkBook  wb = WorkBook.Load("ProductInventory.xlsx");
WorkSheet ws = wb.DefaultWorkSheet;

// Bold header row with a blue background and white text
Range headerRange = ws["A1:H1"];
headerRange.Style.Font.Bold            = true;
headerRange.Style.BackgroundColor      = "#4472C4";
headerRange.Style.Font.Color           = "#FFFFFF";

// Format the Price column as currency
Range priceColumn = ws["D2:D100"];
priceColumn.Style.NumberFormat = "$#,##0.00";

// Highlight low-stock rows in red
for (int row = 2; row <= 4; row++)
{
    var stockCell = ws[$"E{row}"];
    if (stockCell.IntValue < 10)
        stockCell.Style.BackgroundColor = "#FF6B6B";
}

wb.SaveAs("FormattedInventory.xlsx");
Console.WriteLine("FormattedInventory.xlsx saved.");
using IronXL;

WorkBook  wb = WorkBook.Load("ProductInventory.xlsx");
WorkSheet ws = wb.DefaultWorkSheet;

// Bold header row with a blue background and white text
Range headerRange = ws["A1:H1"];
headerRange.Style.Font.Bold            = true;
headerRange.Style.BackgroundColor      = "#4472C4";
headerRange.Style.Font.Color           = "#FFFFFF";

// Format the Price column as currency
Range priceColumn = ws["D2:D100"];
priceColumn.Style.NumberFormat = "$#,##0.00";

// Highlight low-stock rows in red
for (int row = 2; row <= 4; row++)
{
    var stockCell = ws[$"E{row}"];
    if (stockCell.IntValue < 10)
        stockCell.Style.BackgroundColor = "#FF6B6B";
}

wb.SaveAs("FormattedInventory.xlsx");
Console.WriteLine("FormattedInventory.xlsx saved.");
$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 titres en gras avec des couleurs de fond créent une hiérarchie visuelle. Le formatage des nombres garantit un affichage correct 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. Vous pouvez en apprendre davantage sur la mise en forme avancée des cellules et les styles de bordure pour améliorer encore vos exportations.

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

Comment appliquer une mise en forme conditionnelle par programmation ?

IronXL prend en charge les règles de mise en forme conditionnelle qui reproduisent la fonctionnalité intégrée d'Excel. Vous pouvez définir des règles basées sur des seuils de valeurs de cellules, la correspondance de texte ou des plages de dates. Une fois qu'une règle est appliquée à une plage de valeurs, IronXL écrit les métadonnées correspondantes au format XLSX afin que le fichier se comporte exactement comme prévu lorsqu'il est ouvert dans Excel ou Google Sheets.

Ceci est particulièrement utile lorsque le fichier exporté est destiné à être consulté par des parties prenantes non techniques qui s'attendent à des rapports avec code couleur plutôt qu'à de simples données tabulaires.

Comment trier et filtrer les données avant l'exportation ?

Vous pouvez trier et filtrer votre List<t> avant de l'écrire dans Excel. En utilisant LINQ standard, vous pouvez trier les employés par département et par salaire, ou filtrer les produits pour ne conserver que les articles actifs. Une fois la liste filtrée prête, inscrivez-la dans la feuille de calcul en utilisant la même approche colonne par colonne que celle présentée ci-dessus.

IronXL prend également en charge le tri des cellules au sein d'une plage déjà remplie directement dans le classeur, ce qui permet d'effectuer des tris après le remplissage sans revenir à la collection d'origine.

Comment exporter des listes vers d'autres formats de fichiers ?

IronXL ne se limite pas à XLSX. Le même objet WorkBook peut être enregistré dans plusieurs formats avec une simple modification de méthode :

  • XLSX -- Format Excel moderne par défaut : workbook.SaveAs("output.xlsx")
  • XLS -- Format Excel hérité pour les anciennes versions d'Office
  • CSV -- Valeurs séparées par des virgules pour la compatibilité avec les pipelines de données
  • TSV -- Valeurs séparées par des tabulations

Lors de l'exportation au format CSV , chaque feuille de calcul devient un fichier CSV distinct. IronXL s'avère ainsi utile non seulement pour les rapports destinés aux utilisateurs finaux, mais aussi pour la génération de fichiers de données intermédiaires utilisés par les pipelines ETL, les outils d'analyse de données ou les API tierces. Pour l'exportation des données DataGridView (un format courant dans les applications Windows Forms), IronXL s'intègre parfaitement sans nécessiter d'adaptateurs supplémentaires.

Comment gérer efficacement les grands ensembles de données ?

Lors de l'exportation de milliers de lignes, les performances deviennent un problème. Gardez à l'esprit les directives suivantes :

  • Commencez par remplir un DataTable et écrivez les lignes dans une boucle plutôt que d'appeler individuellement les méthodes de définition de cellule à plusieurs reprises à partir de la réflexion.
  • Appelez AutoSizeColumn uniquement après que toutes les données soient écrites, car il s'agit d'une opération de lecture-analyse.
  • Évitez d'ouvrir le classeur pour le relire et le réenregistrer dans une boucle serrée -- construisez l'ensemble de données complet en mémoire, puis appelez SaveAs une seule fois.
  • Pour les ensembles de données de plus de 100 000 lignes, envisagez de répartir l'exportation sur plusieurs feuilles de calcul afin de respecter les limites du nombre de lignes d'Excel et de maintenir une taille de fichier gérable.

IronXL fournit également un flux de travail d'exportation ASP.NET Core où le fichier XLSX est écrit directement sur un MemoryStream et renvoyé comme réponse de téléchargement de fichier, contournant entièrement les E/S disque.

Comment exporter des listes vers Excel dans ASP.NET Core?

Lors de la création d'API Web ou d'applications Razor Pages, il est généralement préférable de renvoyer le fichier Excel sous forme de réponse HTTP plutôt que de l'enregistrer sur le disque. Le modèle ci-dessous renvoie un FileContentResult à partir d'une action de contrôleur :

Le contrôleur injecte un service qui construit le WorkBook, appelle workbook.ToByteArray(), puis renvoie les octets avec le type MIME application/vnd.openxmlformats-officedocument.spreadsheetml.sheet et un en-tête Content-Disposition: attachment. Cette approche fonctionne avec n'importe quel contrôleur API minimal ou MVC .NET 10.

Pour une présentation complète, consultez le tutoriel d'exportation Excel ASP.NET Core et le tutoriel d'exportation Blazor si vous développez une application Blazor WebAssembly ou Blazor Server.

Comment démarrer avec IronXL dès aujourd'hui ?

IronXL transforme la tâche de génération de fichiers Excel en code maintenable. Son API élimine les dépendances à Microsoft Office tout en fournissant des résultats professionnels répondant aux exigences des entreprises. La bibliothèque offre des fonctionnalités permettant de gérer tout, des exportations de listes basiques aux transformations de données complexes avec mise en forme et style.

Vous pouvez également utiliser IronXL pour lire et modifier des classeurs existants , exporter des données Excel vers DataTable pour un traitement ultérieur ou créer des tableaux croisés dynamiques pour des rapports de synthèse. Combinez n'importe laquelle de ces fonctionnalités avec les options de mise en forme présentées ci-dessus pour produire des feuilles de calcul qui ne nécessitent aucun ajustement manuel avant leur distribution.

IronXL est disponible sur NuGet et fonctionne avec tout projet ciblant .NET 10, .NET 8 ou .NET Framework 4.6.2+ . Le SDK Open XML sous-tend le format de fichier XLSX IronXL lit et écrit, vous assurant ainsi que les fichiers générés sont conformes à la norme ECMA-376 et s'ouvrent correctement dans toute application compatible OOXML.

Commencez avec IronXL maintenant.
green arrow pointer

Prêt à exporter des listes C# vers Excel ? Téléchargez IronXL dès maintenant et découvrez la rapidité avec laquelle vous pouvez convertir des objets de liste en Excel dans vos applications .NET . Pour les déploiements en production, découvrez les options de licences flexibles qui évoluent en fonction de vos besoins. Consultez la documentation 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 facilement les objets List en 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

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me