Passer au contenu du pied de page
UTILISATION D'IRONXL

Comment écrire dans un fichier Excel en VB.NET (La méthode facile)

L'utilisation d'Office Interop a traditionnellement été l'option de facto pour automatiser les tâches Microsoft Excel, mais elle présente des inconvénients importants : des problèmes de performance, des complications côté serveur et l'obligation d'installer Microsoft Excel sur la machine.

Ce guide présente une approche moderne et plus efficace pour créer et écrire dans un fichier Excel en VB.NET. Nous utiliserons IronXL pour .NET , une bibliothèque conçue spécifiquement pour aider les développeurs à créer, lire et modifier des feuilles de calcul Excel sans recourir à Office Interop. Vous découvrirez comment effectuer des tâches courantes telles que la création de nouveaux fichiers, l'écriture de données à partir de collections et la modification de documents existants en quelques lignes de code intuitives.

Comment débuter avec l'automatisation Excel en VB.NET ?

Pour commencer à écrire dans des fichiers Excel depuis votre projet VB.NET, vous devez d'abord ajouter la bibliothèque IronXL. Le processus est simple et peut être réalisé directement dans Visual Studio.

Tout d'abord, assurez-vous que votre environnement de développement est prêt :

  • Visual Studio 2022 ou version ultérieure.
  • Un projet actif ciblant .NET Framework 4.6.2 ou supérieur , ou .NET Core/.NET 5+ . IronXL est compatible avec toutes les versions modernes de .NET, jusqu'à .NET 9 et 10 inclus.

Ensuite, installez le package NuGet IronXL :

  1. Ouvrez le Gestionnaire de packages NuGet dans Visual Studio.
  2. Recherchez le package IronXL.Excel .
  3. Cliquez sur " Installer ".

Vous pouvez également l'installer via la console du gestionnaire de packages avec la commande suivante :

Install-Package IronXL.Excel

! Accédez au gestionnaire de packages NuGet Accéder au Gestionnaire de packages NuGet dans le menu de Visual Studio pour trouver le package approprié pour l'intégration VB.NET Excel.

Une fois installé, vous êtes prêt à commencer à écrire du code. Il suffit d'ajouter Imports IronXL en haut de votre fichier VB.NET pour rendre les classes de la bibliothèque accessibles.

Recherchez le package IronXL dans l'interface utilisateur du gestionnaire de packages NuGet. Recherche du package IronXL pour installer la bibliothèque nécessaire à l'écriture de données dans un fichier Excel à l'aide de VB.NET.

Comment créer un nouveau fichier Excel et y écrire des données ?

Créer un nouveau fichier Excel à partir de zéro est une tâche fondamentale. Avec IronXL, vous pouvez générer un classeur, ajouter des feuilles de calcul et remplir des cellules avec des données provenant de n'importe quelle source, telle qu'une collection d'objets. C'est idéal pour des tâches comme l'exportation de données d'application ou la génération de rapports quotidiens.

Prenons un exemple concret. Imaginons que nous ayons une liste de données produits que nous souhaitons exporter vers une feuille de calcul Excel.

Écrire une collection dans une nouvelle feuille de calcul Excel

Le code suivant montre comment prendre une List(Of Product) et écrire son contenu dans un fichier Excel nouvellement créé.

Imports IronXL
Imports System.Collections.Generic
Imports System.Linq

Public Class Product
    Public Property ID As Integer
    Public Property Name As String
    Public Property Price As Decimal
End Class

Module Program
    Sub Main(args As String())
        ' 1. Prepare a list of data to write to Excel.
        Dim products As New List(Of Product) From {
            New Product With {.ID = 1, .Name = "Laptop", .Price = 1200.50D},
            New Product With {.ID = 2, .Name = "Keyboard", .Price = 75.00D},
            New Product With {.ID = 3, .Name = "Mouse", .Price = 25.99D}
        }

        ' 2. Create a new Excel workbook and select the default worksheet.
        Dim workbook As WorkBook = WorkBook.Create()
        Dim sheet As WorkSheet = workbook.DefaultWorkSheet

        ' 3. Write headers for our data.
        sheet("A1").Value = "Product ID"
        sheet("B1").Value = "Product Name"
        sheet("C1").Value = "Price"

        ' Style the header row.
        Dim headerRange = sheet.GetRange("A1:C1")
        headerRange.Style.Font.Bold = True
        headerRange.Style.SetBackgroundColor("#D3D3D3") ' Light Gray

        ' 4. Iterate through the product list and write data to subsequent rows.
        For i As Integer = 0 To products.Count - 1
            Dim product = products(i)
            Dim row = i + 2 ' Start from the second row
            sheet("A" & row).Value = product.ID
            sheet("B" & row).Value = product.Name
            sheet("C" & row).Value = product.Price
        Next

        ' 5. Apply currency formatting to the price column.
        Dim priceColumn = sheet.GetRange("C2:C" & products.Count + 1)
        priceColumn.Style.Format = "$#,##0.00"

        ' 6. Auto-size columns for better readability.
        sheet.Columns.AutoFit()

        ' 7. Save the newly created and populated workbook to a file.
        workbook.SaveAs("ProductReport.xlsx")

    End Sub
End Module
Imports IronXL
Imports System.Collections.Generic
Imports System.Linq

Public Class Product
    Public Property ID As Integer
    Public Property Name As String
    Public Property Price As Decimal
End Class

Module Program
    Sub Main(args As String())
        ' 1. Prepare a list of data to write to Excel.
        Dim products As New List(Of Product) From {
            New Product With {.ID = 1, .Name = "Laptop", .Price = 1200.50D},
            New Product With {.ID = 2, .Name = "Keyboard", .Price = 75.00D},
            New Product With {.ID = 3, .Name = "Mouse", .Price = 25.99D}
        }

        ' 2. Create a new Excel workbook and select the default worksheet.
        Dim workbook As WorkBook = WorkBook.Create()
        Dim sheet As WorkSheet = workbook.DefaultWorkSheet

        ' 3. Write headers for our data.
        sheet("A1").Value = "Product ID"
        sheet("B1").Value = "Product Name"
        sheet("C1").Value = "Price"

        ' Style the header row.
        Dim headerRange = sheet.GetRange("A1:C1")
        headerRange.Style.Font.Bold = True
        headerRange.Style.SetBackgroundColor("#D3D3D3") ' Light Gray

        ' 4. Iterate through the product list and write data to subsequent rows.
        For i As Integer = 0 To products.Count - 1
            Dim product = products(i)
            Dim row = i + 2 ' Start from the second row
            sheet("A" & row).Value = product.ID
            sheet("B" & row).Value = product.Name
            sheet("C" & row).Value = product.Price
        Next

        ' 5. Apply currency formatting to the price column.
        Dim priceColumn = sheet.GetRange("C2:C" & products.Count + 1)
        priceColumn.Style.Format = "$#,##0.00"

        ' 6. Auto-size columns for better readability.
        sheet.Columns.AutoFit()

        ' 7. Save the newly created and populated workbook to a file.
        workbook.SaveAs("ProductReport.xlsx")

    End Sub
End Module
VB .NET

Comment ça marche

Cet exemple de code illustre la simplicité et la puissance de l'API IronXL pour l'automatisation de la saisie de données Excel.

  1. Préparation des données : Nous commençons par une classe Product simple et une List(Of Product) qui représente les données que nous voulons exporter. Cela simule l'extraction de données à partir d'une base de données ou d'une autre couche de logique métier.
  2. Création du classeur et de la feuille de calcul : WorkBook.Create() génère un nouveau classeur Excel vide en mémoire. Chaque nouveau classeur contient automatiquement une feuille de calcul, à laquelle nous pouvons accéder via la propriété DefaultWorkSheet . Pour les documents plus complexes, vous pouvez ajouter d'autres feuilles de calcul à l'aide de la méthode CreateWorkSheet .
  3. Écriture des données : Nous accédons aux cellules en utilisant la notation familière de style A1 (par exemple, sheet("A1") ). La propriété .Value est utilisée pour définir et obtenir le contenu d'une cellule. IronXL gère automatiquement les conversions de types de données pour les nombres, les chaînes de caractères et les dates.
  4. Style et mise en forme : IronXL fournit une API de style complète. Dans cet exemple, nous sélectionnons une Range de cellules et appliquons une mise en forme en gras et une couleur d'arrière-plan à notre en-tête. Nous appliquons également un format monétaire à la colonne des prix à l'aide de la propriété Style.Format , une fonctionnalité essentielle pour la création de rapports professionnels. Pour plus d'options de style, consultez la documentation de l'API pour l'objet Style .
  5. Enregistrement du fichier : Enfin, workbook.SaveAs("ProductReport.xlsx") enregistre le classeur en mémoire dans le système de fichiers. IronXL prend en charge différents formats, notamment .xlsx , .xls , .csv et .tsv , vous offrant ainsi une grande flexibilité dans l'exportation de vos données.

Comment puis-je écrire des données dans un fichier Excel existant ?

Souvent, il n'est pas nécessaire de créer un nouveau fichier, mais plutôt d'ajouter des données à un fichier existant. Ceci est courant pour la journalisation, l'ajout d'enregistrements à un ensemble de données ou la mise à jour d'un rapport. IronXL rend ce processus aussi simple que la création d'un nouveau fichier.

L'exemple suivant montre comment ouvrir une feuille de calcul existante, trouver la dernière ligne utilisée et ajouter de nouvelles données.

Imports IronXL
Imports System.Collections.Generic
Imports System.Linq

' (Assuming the Product class from the previous example is available)

Module Program
    Sub Main(args As String())
        ' Ensure the file from our previous example exists.
        If Not System.IO.File.Exists("ProductReport.xlsx") Then
            Console.WriteLine("Please run the first example to create ProductReport.xlsx")
            Return
        End If

        ' 1. Load the existing workbook from the file system.
        Dim workbook As WorkBook = WorkBook.Load("ProductReport.xlsx")
        Dim sheet As WorkSheet = workbook.DefaultWorkSheet

        ' 2. Find the first empty row to append new data.
        ' The LastRowUsed property gives us the last row with data.
        Dim lastRow = sheet.Info.LastRowUsed
        Dim newRowIndex = lastRow.RowNumber + 1

        ' 3. Define the new data to be added.
        Dim newProducts As New List(Of Product) From {
            New Product With {.ID = 4, .Name = "Monitor", .Price = 350.00D},
            New Product With {.ID = 5, .Name = "Webcam", .Price = 99.99D}
        }

        ' 4. Loop through the new data and write it to the worksheet.
        For i As Integer = 0 To newProducts.Count - 1
            Dim product = newProducts(i)
            Dim currentRow = newRowIndex + i
            sheet("A" & currentRow).Value = product.ID
            sheet("B" & currentRow).Value = product.Name
            sheet("C" & currentRow).Value = product.Price
        Next

        ' 5. Re-apply formatting and auto-fit columns to include new data.
        Dim priceColumn = sheet.GetRange("C2:C" & sheet.Info.LastRowUsed.RowNumber)
        priceColumn.Style.Format = "$#,##0.00"
        sheet.Columns.AutoFit()

        ' 6. Save the changes back to the original file.
        workbook.Save()

        ' Or save as a new file to preserve the original.
        ' workbook.SaveAs("ProductReport_Updated.xlsx")
    End Sub
End Module
Imports IronXL
Imports System.Collections.Generic
Imports System.Linq

' (Assuming the Product class from the previous example is available)

Module Program
    Sub Main(args As String())
        ' Ensure the file from our previous example exists.
        If Not System.IO.File.Exists("ProductReport.xlsx") Then
            Console.WriteLine("Please run the first example to create ProductReport.xlsx")
            Return
        End If

        ' 1. Load the existing workbook from the file system.
        Dim workbook As WorkBook = WorkBook.Load("ProductReport.xlsx")
        Dim sheet As WorkSheet = workbook.DefaultWorkSheet

        ' 2. Find the first empty row to append new data.
        ' The LastRowUsed property gives us the last row with data.
        Dim lastRow = sheet.Info.LastRowUsed
        Dim newRowIndex = lastRow.RowNumber + 1

        ' 3. Define the new data to be added.
        Dim newProducts As New List(Of Product) From {
            New Product With {.ID = 4, .Name = "Monitor", .Price = 350.00D},
            New Product With {.ID = 5, .Name = "Webcam", .Price = 99.99D}
        }

        ' 4. Loop through the new data and write it to the worksheet.
        For i As Integer = 0 To newProducts.Count - 1
            Dim product = newProducts(i)
            Dim currentRow = newRowIndex + i
            sheet("A" & currentRow).Value = product.ID
            sheet("B" & currentRow).Value = product.Name
            sheet("C" & currentRow).Value = product.Price
        Next

        ' 5. Re-apply formatting and auto-fit columns to include new data.
        Dim priceColumn = sheet.GetRange("C2:C" & sheet.Info.LastRowUsed.RowNumber)
        priceColumn.Style.Format = "$#,##0.00"
        sheet.Columns.AutoFit()

        ' 6. Save the changes back to the original file.
        workbook.Save()

        ' Or save as a new file to preserve the original.
        ' workbook.SaveAs("ProductReport_Updated.xlsx")
    End Sub
End Module
VB .NET

Explication plus détaillée

La modification d'un fichier existant suit un schéma logique de chargement-édition-enregistrement.

  1. Chargement du classeur : Au lieu de WorkBook.Create() , nous utilisons WorkBook.Load("ProductReport.xlsx") . Cette fonction ouvre le fichier spécifié et analyse son contenu pour le convertir en un objet WorkBook , prêt à être manipulé.
  2. Trouver le point d'insertion : Un défi majeur lors de l'ajout de données consiste à trouver où commencer à écrire. IronXL simplifie cela grâce à la propriété sheet.Info.LastRowUsed , qui renvoie le dernier objet Row contenant des données. Il suffit de récupérer son numéro de ligne et d'y ajouter un pour trouver la première ligne vide.
  3. Ajout de données : Le processus d'écriture des nouvelles données est identique à l'exemple précédent. Nous parcourons notre nouvelle liste Product et remplissons les cellules des lignes vides nouvellement identifiées.
  4. Enregistrement des modifications : La méthode workbook.Save() écrase le fichier d'origine avec le classeur modifié à partir de la mémoire. Si vous devez conserver l'original, utilisez simplement SaveAs() avec un nouveau nom de fichier, comme indiqué dans la ligne commentée.

Comment puis-je écrire un DataTable dans une feuille de calcul Excel ?

Pour les développeurs travaillant avec des données provenant de sources telles que SQL Server, une tâche courante consiste à écrire le contenu d'une DataTable directement dans une feuille Excel. IronXL simplifie ce processus grâce à une méthode intégrée, éliminant ainsi la nécessité de parcourir manuellement les lignes et les colonnes.

Cet exemple montre comment remplir un DataTable et l'exporter vers un nouveau fichier Excel en une seule étape.

Imports IronXL
Imports System.Data

Module Program
    Sub Main(args As String())
        ' 1. Create and populate a DataTable. This often comes from a database query.
        Dim dt As New DataTable("EmployeeData")
        dt.Columns.Add("EmployeeID", GetType(Integer))
        dt.Columns.Add("FullName", GetType(String))
        dt.Columns.Add("Department", GetType(String))
        dt.Columns.Add("HireDate", GetType(Date))

        dt.Rows.Add(101, "John Smith", "Sales", New Date(2022, 5, 20))
        dt.Rows.Add(102, "Jane Doe", "Engineering", New Date(2021, 8, 15))
        dt.Rows.Add(103, "Peter Jones", "Marketing", New Date(2023, 1, 10))

        ' 2. Create a new workbook.
        Dim workbook As WorkBook = WorkBook.Create()
        Dim sheet As WorkSheet = workbook.CreateWorkSheet("Employees")

        ' 3. Write the DataTable to the worksheet starting at cell A1.
        ' The second parameter (True) indicates that column headers should be included.
        sheet.Write(dt, "A1", True)

        ' 4. Apply some styling for a more polished look.
        sheet.Columns.AutoFit()
        Dim headerRange = sheet.GetRange("A1:D1")
        headerRange.Style.Font.Bold = True
        headerRange.Style.SetBackgroundColor("#C5D9F1") ' Light Blue

        Dim dateColumn = sheet.GetRange("D2:D" & dt.Rows.Count + 1)
        dateColumn.Style.Format = "yyyy-mm-dd"

        ' 5. Save the workbook.
        workbook.SaveAs("EmployeeDatabaseExport.xlsx")
    End Sub
End Module
Imports IronXL
Imports System.Data

Module Program
    Sub Main(args As String())
        ' 1. Create and populate a DataTable. This often comes from a database query.
        Dim dt As New DataTable("EmployeeData")
        dt.Columns.Add("EmployeeID", GetType(Integer))
        dt.Columns.Add("FullName", GetType(String))
        dt.Columns.Add("Department", GetType(String))
        dt.Columns.Add("HireDate", GetType(Date))

        dt.Rows.Add(101, "John Smith", "Sales", New Date(2022, 5, 20))
        dt.Rows.Add(102, "Jane Doe", "Engineering", New Date(2021, 8, 15))
        dt.Rows.Add(103, "Peter Jones", "Marketing", New Date(2023, 1, 10))

        ' 2. Create a new workbook.
        Dim workbook As WorkBook = WorkBook.Create()
        Dim sheet As WorkSheet = workbook.CreateWorkSheet("Employees")

        ' 3. Write the DataTable to the worksheet starting at cell A1.
        ' The second parameter (True) indicates that column headers should be included.
        sheet.Write(dt, "A1", True)

        ' 4. Apply some styling for a more polished look.
        sheet.Columns.AutoFit()
        Dim headerRange = sheet.GetRange("A1:D1")
        headerRange.Style.Font.Bold = True
        headerRange.Style.SetBackgroundColor("#C5D9F1") ' Light Blue

        Dim dateColumn = sheet.GetRange("D2:D" & dt.Rows.Count + 1)
        dateColumn.Style.Format = "yyyy-mm-dd"

        ' 5. Save the workbook.
        workbook.SaveAs("EmployeeDatabaseExport.xlsx")
    End Sub
End Module
VB .NET

La méthode sheet.Write() est incroyablement efficace à cet effet. Il mappe intelligemment la structure DataTable à la feuille de calcul, y compris les en-têtes de colonnes si spécifiés. Il s'agit d'une fonctionnalité puissante pour toute application basée sur les données et d'un gain de temps considérable par rapport à l'itération manuelle. Pour plus de détails sur l'importation et l'exportation de données, consultez notre tutoriel sur la conversion entre différents formats de feuilles de calcul .

Que puis-je faire d'autre lors de l'écriture de fichiers Excel ?

L'écriture des données n'est que le début. Une bibliothèque Excel VB.NET robuste doit offrir une suite complète de fonctionnalités pour automatiser toute tâche liée aux feuilles de calcul. IronXL offre des fonctionnalités étendues, notamment :

  • Formules : Définir et calculer des formules par programmation. Vous pouvez attribuer une formule à Value d'une cellule (par exemple, sheet("C1").Value = "=SUM(A1:B1)" ) et IronXL calculera le résultat.
  • Graphiques : Créez différents types de graphiques à partir des données de la feuille de calcul pour visualiser les informations.
  • Validation des données : Appliquer des règles aux cellules, par exemple en n'autorisant que les nombres compris dans une plage spécifique ou les valeurs d'une liste déroulante.
  • Mise en forme conditionnelle : Appliquez un style aux cellules en fonction de leurs valeurs, ce qui permet de mettre en évidence les points de données importants.
  • Sécurité et protection : Protégez les feuilles de calcul ou les classeurs entiers par des mots de passe afin de contrôler l'accès et d'empêcher toute modification.

Ces fonctionnalités permettent l'automatisation complète des flux de travail complexes de génération de rapports et d'analyse de données directement au sein de vos applications .NET.

Commencez dès aujourd'hui à écrire dans des fichiers Excel en VB.NET

Comme démontré, l'écriture de données dans des fichiers Excel en VB.NET est considérablement simplifiée par l'utilisation d'une bibliothèque moderne comme IronXL. En évitant les complexités et les dépendances d'Office Interop, vous pouvez créer des applications plus fiables, performantes et faciles à déployer. Que vous ayez besoin de créer des fichiers Excel à partir de zéro, d'ajouter des données à des rapports existants ou d'exporter un DataTable , IronXL fournit une API intuitive et puissante pour réaliser le travail efficacement.

Commencez à utiliser IronXL dans votre projet aujourd'hui avec un essai gratuit.

Première étape :
green arrow pointer

Vous pouvez télécharger IronXL et l'essayer avec une licence d'essai gratuite pour voir à quel point il s'intègre facilement à vos projets.

Pour ceux qui ont des besoins plus larges, n'oubliez pas qu'IronXL fait également partie de la suite Iron pour .NET . Avec une seule licence, vous accédez à un ensemble complet de bibliothèques pour la gestion des PDF, des codes-barres, de la reconnaissance optique de caractères (OCR) et bien plus encore, offrant une valeur exceptionnelle à tout développeur .NET.

Questions Fréquemment Posées

Comment puis-je écrire dans des fichiers Excel en VB.NET sans utiliser Office Interop?

Vous pouvez utiliser la bibliothèque IronXL pour écrire dans des fichiers Excel en VB.NET sans avoir besoin de Office Interop. IronXL vous permet de créer, lire et manipuler des fichiers Excel sans installer Microsoft Excel.

Quels sont les avantages d'utiliser IronXL par rapport à Office Interop pour l'automatisation d'Excel?

IronXL offre des avantages significatifs par rapport à Office Interop, tels qu'une performance améliorée, un déploiement plus facile et la possibilité de fonctionner sur des serveurs sans nécessiter l'installation de Microsoft Excel. Il simplifie les tâches d'automatisation d'Excel dans les applications .NET.

Comment installer IronXL dans un projet VB.NET pour la manipulation de fichiers Excel?

Pour installer IronXL dans un projet VB.NET, utilisez le gestionnaire de packages NuGet dans Visual Studio. Recherchez IronXL.Excel et installez-le. Alternativement, utilisez la console du gestionnaire de packages avec la commande : Install-Package IronXL.Excel.

Comment créer un nouveau fichier Excel et insérer des données en VB.NET?

Avec IronXL, vous pouvez créer un nouveau fichier Excel en appelant WorkBook.Create(). Accédez à une feuille de calcul et insérez des données en utilisant la notation A1 comme sheet("A1").Value = "Données Exemple". Enregistrez le fichier en utilisant la méthode SaveAs().

Comment puis-je ajouter des données à un fichier Excel existant en utilisant IronXL?

Pour ajouter des données à un fichier Excel existant avec IronXL, chargez le classeur en utilisant WorkBook.Load("filename.xlsx"). Déterminez la prochaine ligne vide avec sheet.Info.LastRowUsed et insérez vos nouvelles données. Sauvegardez les modifications en utilisant workbook.Save().

Est-il possible d'exporter une DataTable vers une feuille Excel en VB.NET?

Oui, IronXL simplifie l'exportation d'une DataTable vers une feuille Excel. Utilisez la méthode sheet.Write() pour transférer efficacement l'ensemble de la table à la feuille de calcul.

Quels formats de fichiers Excel IronXL peut-il gérer?

IronXL prend en charge plusieurs formats de fichiers Excel, notamment .xlsx, .xls, .csv, et .tsv, permettant une flexibilité dans le traitement de divers types de données de feuille de calcul.

Puis-je formater des cellules Excel et utiliser des formules avec IronXL?

Oui, IronXL offre un support étendu pour le formatage et les formules. Vous pouvez ajuster les polices, les couleurs, les bordures et les formats de nombres par programmation, et définir des formules Excel comme "=SUM(A1:A10)" pour le calcul.

Jacob Mellor, Directeur technique @ Team Iron
Directeur technique

Jacob Mellor est directeur technique chez Iron Software et un ingénieur visionnaire pionnier dans la technologie des PDF en C#. En tant que développeur original derrière la base de code principale d'Iron Software, il a façonné l'architecture du produit de l'entreprise depuis sa création, ...

Lire la suite