Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Tim Corey
55m 42s
Créer et travailler avec des fichiers Excel est une compétence cruciale pour tout développeur C# construisant des outils de reporting, des exportations de données ou des interfaces de saisie utilisateur. Dans cet article, nous allons nous plonger dans une démonstration détaillée fournie par Tim Corey dans sa vidéo "Creating Excel files in C#", où il montre comment créer un fichier Excel à l'aide de C#, le formater et même lire les données qu'il contient, le tout en utilisant la bibliothèque EPPlus.
Que vous cherchiez à créer un nouveau classeur Excel à partir d'une List, à formater les cellules de la feuille de calcul Excel ou à lire des données structurées dans votre application, l'exemple de Tim sert de tutoriel pratique pour couvrir les essentiels de la génération de fichiers Excel en C#.
Décrivons la situation étape par étape en nous référant à la vidéo de Tim.
Tim commence par expliquer que Microsoft Excel est l'un des outils les plus importants dans le monde des affaires. Les fichiers Excel sont conviviaux, très polyvalents et parfaits pour représenter des données. Il souligne comment la création de fichiers Excel en C# peut être utilisée comme substitut à des solutions de reporting complexes - faisant d'Excel votre outil de reporting par défaut.
L'objectif : créer une application Excel à l'aide de C#, la remplir avec des données, appliquer un certain formatage, puis lire à partir de ce fichier Excel.
Tim ouvre Visual Studio 2019, sélectionne une application console (.NET Core) et nomme la solution ExcelDemoApp. L'utilisation d'une application console offre un environnement propre et sans distraction pour se concentrer uniquement sur le code lié à Excel.
Il met à niveau le .NET Framework vers .NET 5.0 pour tirer parti des fonctionnalités de C# 9, telles que l'instanciation simplifiée des objets.
Pour créer un classeur Excel, Tim installe le package EPPlus via le gestionnaire de packages NuGet. EPPlus est une bibliothèque Excel qui fonctionne avec des fichiers .xlsx (Open XML) et prend en charge toutes les fonctionnalités d'Excel, telles que les graphiques, les tableaux, les styles et les formules, sans avoir besoin de MS Office ou d'Excel Interop.
Remarque : EPPlus est gratuit pour une utilisation non commerciale, mais nécessite une licence pour les applications commerciales.
Il copie la ligne d'acceptation de la licence non commerciale requise dans son code pour éviter les erreurs d'exécution et ajoute les éléments nécessaires à l'aide d'OfficeOpenXml ; directif.
À l'aide de System.IO.FileInfo, Tim définit un chemin d'accès à un fichier codé en dur :
var file = new FileInfo(@"C:\demos\youtubedemo.xlsx");Dim file As New FileInfo("C:\demos\youtubedemo.xlsx")Ce fichier n'existe pas au départ : il sera créé dynamiquement par le programme.
Pour remplir la feuille de calcul Excel, Tim définit une simple classe PersonModel avec les propriétés suivantes :
entier Id
chaîne Prénom
chaîne Nom
Il utilise une méthode d'aide GetSetupData() pour renvoyer une List<PersonModel> remplie d'exemples de données comme Tim Corey, Sue Storm et Jane Smith.
Dans le développement moderne, il est inacceptable de bloquer le fil de l'interface utilisateur. C'est pourquoi Tim définit une méthode asynchrone :
static async Task SaveExcelFile(List<PersonModel> people, FileInfo file)Private Shared Async Function SaveExcelFile(people As List(Of PersonModel), file As FileInfo) As TaskAvant d'écrire dans Excel, il vérifie si le fichier existe et le supprime pour éviter les conflits de noms.
if (file.Exists) file.Delete();If file.Exists Then file.Delete()Tim utilise l'objet EPPlus ExcelPackage à l'intérieur d'un bloc using pour garantir une élimination correcte :
using var package = new ExcelPackage(file);Using package As New ExcelPackage(file)
End UsingIl ajoute une nouvelle feuille de travail au classeur :
var ws = package.Workbook.Worksheets.Add("MainReport");Dim ws = package.Workbook.Worksheets.Add("MainReport")À l'aide de LoadFromCollection, il insère la liste des personnes à partir de la cellule "A2" :
ws.Cells["A2"].LoadFromCollection(people, true);ws.Cells("A2").LoadFromCollection(people, True)Ensuite, AutoFitColumns() ajuste automatiquement la largeur des colonnes :
ws.Cells[ws.Dimension.Address].AutoFitColumns();ws.Cells(ws.Dimension.Address).AutoFitColumns()Enfin, il enregistre le fichier Excel :
await package.SaveAsync();Await package.SaveAsync()Pour rendre le fichier Excel plus lisible, Tim montre comment appliquer des styles :
ws.Cells["A1"].Value = "Our Cool Report";
ws.Cells["A1:C1"].Merge = true; ws.Row(1).Style.Font.Size = 24;
ws.Row(1).Style.Font.Color.SetColor(Color.Blue);
ws.Column(1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;ws.Cells("A1").Value = "Our Cool Report"
ws.Cells("A1:C1").Merge = True
ws.Row(1).Style.Font.Size = 24
ws.Row(1).Style.Font.Color.SetColor(Color.Blue)
ws.Column(1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Centerws.Row(2).Style.Font.Bold = true;
ws.Row(2).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;ws.Row(2).Style.Font.Bold = True
ws.Row(2).Style.HorizontalAlignment = ExcelHorizontalAlignment.Centerws.Column(3).Width = 20;ws.Column(3).Width = 20Cette section démontre un formatage avancé tel que :
Cellules fusionnées
Style de police
Couleurs de fond
Alignement des lignes et des colonnes
Ajustements de la largeur
Ces derniers imitent les fonctions de formatage typiques de MS Office Excel.
Maintenant que nous avons écrit des données dans Excel, il est temps de les relire dans C#.
Tim présente la méthode :
static async Task<List<PersonModel>> LoadExcelFile(FileInfo file)Private Shared Async Function LoadExcelFile(file As FileInfo) As Task(Of List(Of PersonModel))Il met en place des compteurs de lignes et de colonnes :
int row = 3; // Skip title and header rows int col = 1;Dim row As Integer = 3 ' Skip title and header rows
Dim col As Integer = 1À l'aide d'une boucle while, il vérifie que les cellules ne sont pas vides et lit les valeurs :
while (!string.IsNullOrWhiteSpace(ws.Cells[row, col].Value?.ToString()))While Not String.IsNullOrWhiteSpace(ws.Cells(row, col).Value?.ToString())À l'intérieur de la boucle, les valeurs sont lues et analysées :
p.Id = int.Parse(ws.Cells[row, col].Value.ToString());
p.FirstName = ws.Cells[row, col + 1].Value.ToString();
p.LastName = ws.Cells[row, col + 2].Value.ToString();p.Id = Integer.Parse(ws.Cells(row, col).Value.ToString())
p.FirstName = ws.Cells(row, col + 1).Value.ToString()
p.LastName = ws.Cells(row, col + 2).Value.ToString()La liste<PersonModel> est remplie et renvoyée.
Tim parcourt en boucle la liste retournée et écrit chaque entrée dans la console :
foreach (var p in peopleFromExcel)
{
Console.WriteLine($"{p.Id} {p.FirstName} {p.LastName}");
}For Each p In peopleFromExcel
Console.WriteLine($"{p.Id} {p.FirstName} {p.LastName}")
NextPour démontrer la flexibilité d'Excel en tant qu'outil d'entrée utilisateur, Tim ajoute manuellement de nouveaux enregistrements ("Bill Smith", "Mary White") directement dans le fichier Excel. Lors de la ré-exécution de l'application, ces entrées sont importées sans modification du code, ce qui prouve le potentiel d'Excel en tant qu'interface de saisie de données.
Tim met en avant des cas d'utilisation de la solution C# Excel :
Exportation de tableaux de base de données vers Excel
Importation de données saisies par les utilisateurs finaux
Utiliser Excel comme tableau de bord de reporting
Création de classeurs structurés pour le traitement des données
Et tout cela sans s'appuyer sur Microsoft.Office.Interop.Excel, qui nécessite l'installation d'Excel.
Tim explique que les fichiers .xlsx créés par programme ne contiennent pas toutes les métadonnées tant qu'ils ne sont pas ouverts et enregistrés dans Excel. C'est pourquoi la taille du fichier augmente après son ouverture dans l'application Excel réelle.
Il note également qu'EPPlus est une bibliothèque sophistiquée et robuste qui prend en charge :
Graphiques
Images
Graphiques à étincelles
Formules
Mise en page
Frontières
Formatage des cellules
La création de fichiers Excel en C# ne doit pas nécessairement être difficile ou coûteuse. Grâce à la bibliothèque EPPlus Excel, les développeurs peuvent créer des documents Excel riches en fonctionnalités de manière programmatique sans avoir besoin de MS Office. Comme le démontre Tim Corey, quelques lignes de code suffisent pour.. :
Créer un fichier Excel
Remplir les lignes et les colonnes
Appliquer le style
Lire les données en arrière
Utiliser Excel comme interface utilisateur
Il s'agit donc d'un choix fantastique pour les outils de reporting légers, l'importation et l'exportation de données, ou simplement pour fournir à vos utilisateurs une interface qu'ils connaissent déjà.
Ainsi, la prochaine fois que vous construirez un projet et que vous aurez besoin de sortir ou de consommer des données Excel, essayez de mettre en œuvre l'exemple de code de Tim Corey vidéo-et apportez la puissance d'Excel dans vos applications .NET Framework ou .NET Core.
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy