Importer un fichier Excel dans DataTable avec IronXL
Importer un fichier Excel dans une DataTable avec IronXL en C#
Ce n'est un secret pour personne que l'analyse manuelle de fichiers Excel est rarement le moment le plus agréable de la journée d'un développeur. Nous sommes tous passés par là, à lutter contre d'anciennes chaînes de connexion OLEDB ou à essayer de convertir des données de feuilles de calcul non structurées en un format que votre application .NET peut réellement comprendre.
La DataTable en C# est un formidable outil d'égalisation. Il sert de pont idéal, transformant ces lignes et colonnes en une structure familière, prête pour les requêtes LINQ, la liaison DataGrid ou un accès rapide à une base de données SQL.
IronXL simplifie considérablement ce processus. Au lieu de configurations complexes, il utilise une seule méthode ToDataTable intuitive pour gérer la conversion. Que vous développiez un outil de reporting ou un script de migration de données, voici comment importer facilement des données Excel.
Vous voulez nous suivre ? Utilisez la version d'essai gratuite IronXL pour tester vous-même cette puissante bibliothèque.
How Can You Import an Excel File into a DataTable in C#?
Pour importer un fichier Excel dans un DataTable en C#, chargez le classeur à l'aide de WorkBook.Load, accédez à la feuille de calcul cible et appelez la méthode ToDataTable. Cette approche fonctionne avec les fichiers XLSX, XLS, XLSM et CSV. Veillez à faire référence aux espaces de noms suivants pour accéder aux classes nécessaires.
Installez IronXL via le gestionnaire de packages NuGet en exécutant la commande suivante dans Visual Studio à l'aide du gestionnaire de packages NuGet :
Install-Package IronXL.Excel
Ensuite, utilisez ce court extrait de code pour faire circuler vos données :
using IronXL;
using System;
using System.Data;
class Program
{
static void Main(string[] args)
{
// Load the Excel file from the specified path
string filePath = "sales-data.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
// Access the first worksheet in the workbook
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Convert worksheet to DataTable with first row as column headers
DataTable dt = worksheet.ToDataTable(true);
// Display the imported data
foreach (DataRow row in dt.Rows)
{
Console.WriteLine(string.Join(" | ", row.ItemArray));
}
}
}
using IronXL;
using System;
using System.Data;
class Program
{
static void Main(string[] args)
{
// Load the Excel file from the specified path
string filePath = "sales-data.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
// Access the first worksheet in the workbook
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Convert worksheet to DataTable with first row as column headers
DataTable dt = worksheet.ToDataTable(true);
// Display the imported data
foreach (DataRow row in dt.Rows)
{
Console.WriteLine(string.Join(" | ", row.ItemArray));
}
}
}
Imports IronXL
Imports System
Imports System.Data
Module Program
Sub Main(args As String())
' Load the Excel file from the specified path
Dim filePath As String = "sales-data.xlsx"
Dim workbook As WorkBook = WorkBook.Load(filePath)
' Access the first worksheet in the workbook
Dim worksheet As WorkSheet = workbook.DefaultWorkSheet
' Convert worksheet to DataTable with first row as column headers
Dim dt As DataTable = worksheet.ToDataTable(True)
' Display the imported data
For Each row As DataRow In dt.Rows
Console.WriteLine(String.Join(" | ", row.ItemArray))
Next
End Sub
End Module
Sortie

La méthode WorkBook.Load lit le fichier Excel à partir de l'emplacement filePath (chaîne de caractères) et crée un objet classeur contenant toutes les données de la feuille Excel. Le paramètre ToDataTable(true) indique que la première ligne contient des en-têtes de colonnes, qui sont automatiquement utilisés comme noms de colonnes de la table de données.
Quelle est la meilleure méthode pour importer les données d'un fichier Excel dans un DataTable ?
La lecture efficace du contenu d'un fichier Excel nécessite la gestion à la fois des lignes d'en-tête et des données brutes. La méthode ToDataTable d'IronXL accepte un paramètre booléen qui détermine si la première ligne est traitée comme des noms de colonnes ou comme des données. Notez que la gestion des propriétés étendues ou la conversion de types de cellules complexes peuvent nécessiter une configuration supplémentaire, mais la méthode par défaut gère la plupart des cas de manière robuste.
using IronXL;
using System.Data;
// Load workbook from file path
string filePath = @"C:\Data\inventory.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet worksheet = workbook.WorkSheets[0];
// First row as headers (true) or as data (false)
DataTable dataTableWithHeaders = worksheet.ToDataTable(true);
DataTable dataTableWithoutHeaders = worksheet.ToDataTable(false);
// Process each row in the DataTable
foreach (DataRow row in dataTableWithHeaders.Rows)
{
for (int i = 0; i < dataTableWithHeaders.Columns.Count; i++)
{
object value = row[i];
Console.Write($"{value}\t");
}
Console.WriteLine();
}
using IronXL;
using System.Data;
// Load workbook from file path
string filePath = @"C:\Data\inventory.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet worksheet = workbook.WorkSheets[0];
// First row as headers (true) or as data (false)
DataTable dataTableWithHeaders = worksheet.ToDataTable(true);
DataTable dataTableWithoutHeaders = worksheet.ToDataTable(false);
// Process each row in the DataTable
foreach (DataRow row in dataTableWithHeaders.Rows)
{
for (int i = 0; i < dataTableWithHeaders.Columns.Count; i++)
{
object value = row[i];
Console.Write($"{value}\t");
}
Console.WriteLine();
}
Imports IronXL
Imports System.Data
' Load workbook from file path
Dim filePath As String = "C:\Data\inventory.xlsx"
Dim workbook As WorkBook = WorkBook.Load(filePath)
Dim worksheet As WorkSheet = workbook.WorkSheets(0)
' First row as headers (true) or as data (false)
Dim dataTableWithHeaders As DataTable = worksheet.ToDataTable(True)
Dim dataTableWithoutHeaders As DataTable = worksheet.ToDataTable(False)
' Process each row in the DataTable
For Each row As DataRow In dataTableWithHeaders.Rows
For i As Integer = 0 To dataTableWithHeaders.Columns.Count - 1
Dim value As Object = row(i)
Console.Write($"{value}" & vbTab)
Next
Console.WriteLine()
Next
Sortie

Cette flexibilité fait IronXL la solution idéale pour le traitement des fichiers de tableur Excel, quelle que soit leur structure. Contrairement au package EPPlus ou aux méthodes traditionnelles nécessitant de nouvelles instances d'OleDbDataAdapter, IronXL gère la conversion en un seul appel de méthode. La bibliothèque prend en charge .NET Core, .NET Framework et le déploiement multiplateforme sans nécessiter l'installation de Microsoft Excel.
Comment convertir plusieurs feuilles de calcul Excel en un jeu de données ?
Lorsque votre classeur Excel contient plusieurs feuilles, la conversion en DataSet préserve chaque feuille de calcul Excel en tant que DataTable distincte au sein de la collection. Cette approche est essentielle pour les applications de reporting et le traitement de données multi-feuilles.
using IronXL;
using System;
using System.Data;
// Load multi-sheet workbook
WorkBook workbook = WorkBook.Load("quarterly-reports.xlsx");
// Convert entire workbook to DataSet (each sheet becomes a DataTable)
DataSet dataset = workbook.ToDataSet();
// Iterate through all tables in the DataSet
foreach (DataTable table in dataset.Tables)
{
Console.WriteLine($"Sheet: {table.TableName}");
Console.WriteLine($"Rows: {table.Rows.Count}, Columns: {table.Columns.Count}");
foreach (DataRow row in table.Rows)
{
Console.WriteLine(string.Join(", ", row.ItemArray));
}
}
using IronXL;
using System;
using System.Data;
// Load multi-sheet workbook
WorkBook workbook = WorkBook.Load("quarterly-reports.xlsx");
// Convert entire workbook to DataSet (each sheet becomes a DataTable)
DataSet dataset = workbook.ToDataSet();
// Iterate through all tables in the DataSet
foreach (DataTable table in dataset.Tables)
{
Console.WriteLine($"Sheet: {table.TableName}");
Console.WriteLine($"Rows: {table.Rows.Count}, Columns: {table.Columns.Count}");
foreach (DataRow row in table.Rows)
{
Console.WriteLine(string.Join(", ", row.ItemArray));
}
}
Imports IronXL
Imports System
Imports System.Data
' Load multi-sheet workbook
Dim workbook As WorkBook = WorkBook.Load("quarterly-reports.xlsx")
' Convert entire workbook to DataSet (each sheet becomes a DataTable)
Dim dataset As DataSet = workbook.ToDataSet()
' Iterate through all tables in the DataSet
For Each table As DataTable In dataset.Tables
Console.WriteLine($"Sheet: {table.TableName}")
Console.WriteLine($"Rows: {table.Rows.Count}, Columns: {table.Columns.Count}")
For Each row As DataRow In table.Rows
Console.WriteLine(String.Join(", ", row.ItemArray))
Next
Next
Sortie

La méthode ToDataSet crée un nouveau DataSet contenant des objets DataTable pour chaque feuille de calcul. La propriété TableName de chaque tableau reflète le nom de la feuille Excel d'origine, ce qui facilite la référence à des données spécifiques lors du traitement.
Comment importer des données d'Excel vers une base de données ?
Un flux de travail courant consiste à lire les données d'un fichier Excel et à les insérer dans un système de base de données. La structure DataTable s'intègre parfaitement à .NET pour les opérations de base de données.
using IronXL;
using System.Data;
using System.Data.SqlClient;
string filePath = @"C:\imports\customer-data.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Convert Excel data to DataTable
DataTable dt = worksheet.ToDataTable(true);
// Validate data before database insert
if (dt == null || dt.Rows.Count == 0)
{
Console.WriteLine("No data to import");
return;
}
// Insert into database using SqlBulkCopy
string connectionString = "Server=.;Database=Sales;Trusted_Connection=True;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
bulkCopy.DestinationTableName = "Customers";
bulkCopy.WriteToServer(dt);
}
}
Console.WriteLine($"Imported {dt.Rows.Count} records successfully");
using IronXL;
using System.Data;
using System.Data.SqlClient;
string filePath = @"C:\imports\customer-data.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Convert Excel data to DataTable
DataTable dt = worksheet.ToDataTable(true);
// Validate data before database insert
if (dt == null || dt.Rows.Count == 0)
{
Console.WriteLine("No data to import");
return;
}
// Insert into database using SqlBulkCopy
string connectionString = "Server=.;Database=Sales;Trusted_Connection=True;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
bulkCopy.DestinationTableName = "Customers";
bulkCopy.WriteToServer(dt);
}
}
Console.WriteLine($"Imported {dt.Rows.Count} records successfully");
Imports IronXL
Imports System.Data
Imports System.Data.SqlClient
Module Module1
Sub Main()
Dim filePath As String = "C:\imports\customer-data.xlsx"
Dim workbook As WorkBook = WorkBook.Load(filePath)
Dim worksheet As WorkSheet = workbook.DefaultWorkSheet
' Convert Excel data to DataTable
Dim dt As DataTable = worksheet.ToDataTable(True)
' Validate data before database insert
If dt Is Nothing OrElse dt.Rows.Count = 0 Then
Console.WriteLine("No data to import")
Return
End If
' Insert into database using SqlBulkCopy
Dim connectionString As String = "Server=.;Database=Sales;Trusted_Connection=True;"
Using connection As New SqlConnection(connectionString)
connection.Open()
Using bulkCopy As New SqlBulkCopy(connection)
bulkCopy.DestinationTableName = "Customers"
bulkCopy.WriteToServer(dt)
End Using
End Using
Console.WriteLine($"Imported {dt.Rows.Count} records successfully")
End Sub
End Module
Ce code montre comment charger un fichier Excel, le convertir en DataTable et effectuer une insertion en masse dans une base de données. La vérification de valeur nulle garantit l'intégrité des données avant de tenter l'opération d'importation.
Comment exporter un DataTable vers Excel ?
IronXL prend en charge le flux de données bidirectionnel, vous permettant de créer des fichiers Excel à partir d'objets DataTable pour les scénarios de reporting et d'exportation de données.
using IronXL;
using System.Data;
// Create sample DataTable
DataTable dt = new DataTable("Products");
dt.Columns.Add("ProductID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Price", typeof(decimal));
dt.Rows.Add(1, "Widget", 29.99m);
dt.Rows.Add(2, "Gadget", 49.99m);
// Create new workbook and load DataTable
WorkBook workbook = WorkBook.Create();
workbook.LoadWorkSheetsFromDataSet(new DataSet { Tables = { dt } });
// Save as Excel file
workbook.SaveAs("exported-products.xlsx");
using IronXL;
using System.Data;
// Create sample DataTable
DataTable dt = new DataTable("Products");
dt.Columns.Add("ProductID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Price", typeof(decimal));
dt.Rows.Add(1, "Widget", 29.99m);
dt.Rows.Add(2, "Gadget", 49.99m);
// Create new workbook and load DataTable
WorkBook workbook = WorkBook.Create();
workbook.LoadWorkSheetsFromDataSet(new DataSet { Tables = { dt } });
// Save as Excel file
workbook.SaveAs("exported-products.xlsx");
Imports IronXL
Imports System.Data
' Create sample DataTable
Dim dt As New DataTable("Products")
dt.Columns.Add("ProductID", GetType(Integer))
dt.Columns.Add("Name", GetType(String))
dt.Columns.Add("Price", GetType(Decimal))
dt.Rows.Add(1, "Widget", 29.99D)
dt.Rows.Add(2, "Gadget", 49.99D)
' Create new workbook and load DataTable
Dim workbook As WorkBook = WorkBook.Create()
workbook.LoadWorkSheetsFromDataSet(New DataSet With {.Tables = {dt}})
' Save as Excel file
workbook.SaveAs("exported-products.xlsx")
Sortie

La méthode LoadWorkSheetsFromDataSet accepte un DataSet contenant vos objets DataTable et crée les feuilles de calcul correspondantes. Pour en savoir plus sur l'exportation de DataTable vers Excel, consultez la documentation.
Conclusion
IronXL transforme la complexité de la conversion Excel vers DataTable en appels de méthodes simples. Qu'il s'agisse d'importer une seule feuille de calcul Excel ou de traiter des classeurs à plusieurs feuilles pour obtenir un DataSet complet, la bibliothèque gère efficacement les fichiers XLSX, la conversion des types de données et le chargement en flux continu.
La combinaison de la flexibilité de DataTable et de l'API intuitive d'IronXL permet des flux de données puissants pour l'intégration de bases de données, les systèmes de reporting et la liaison de données d'applications. Téléchargez IronXL pour optimiser le traitement de vos données Excel, ou achetez une licence pour un déploiement en production.
Questions Fréquemment Posées
Comment importer un fichier Excel dans un DataTable en utilisant C# ?
Vous pouvez utiliser IronXL pour importer facilement des fichiers Excel dans un DataTable en C#. IronXL fournit une API simple permettant de charger les fichiers Excel et de les convertir en DataTables pour une manipulation ultérieure.
Quels sont les avantages d'utiliser IronXL pour la manipulation de fichiers Excel en C#?
IronXL offre une solution robuste pour la manipulation de fichiers Excel en C#, permettant notamment la lecture, l'écriture et la conversion de données Excel vers différents formats tels que DataTables. Compatible avec tous les principaux types de fichiers Excel, il allie hautes performances et simplicité d'utilisation.
IronXL est-il compatible avec .NET Core?
Oui, IronXL est entièrement compatible avec .NET Core, permettant le développement et le déploiement multiplateformes d'applications nécessitant la manipulation de fichiers Excel.
Puis-je utiliser IronXL pour lire des fichiers Excel de différents formats ?
IronXL prend en charge la lecture des fichiers Excel dans différents formats, notamment XLSX, XLS, CSV et TSV, offrant ainsi une grande flexibilité dans la gestion de différents types de données Excel.
IronXL prend-il en charge les fonctionnalités de sécurité des fichiers Excel ?
Oui, IronXL prend en charge les fichiers Excel protégés par mot de passe, ce qui vous permet de charger et de travailler avec des documents Excel sécurisés dans vos applications C#.
Comment convertir un fichier Excel en DataTable à l'aide IronXL?
Avec IronXL, vous pouvez convertir un fichier Excel en DataTable en chargeant le classeur, en sélectionnant la feuille de calcul et en utilisant les méthodes intégrées pour exporter les données de la feuille de calcul vers un DataTable.
Quels types d'applications peuvent tirer profit de l'utilisation IronXL?
IronXL est idéal pour toute application nécessitant la manipulation de données Excel, comme les outils d'analyse de données, les systèmes de reporting ou tout logiciel ayant besoin d'importer, d'exporter ou de modifier des données Excel.
Peut-on utiliser IronXL pour modifier des fichiers Excel après les avoir importés dans une DataTable ?
Oui, IronXL vous permet de modifier et de mettre à jour des fichiers Excel même après leur importation dans une DataTable, offrant ainsi une expérience fluide pour la modification et l'enregistrement des changements.
Quel niveau d'expérience en programmation est nécessaire pour utiliser IronXL?
IronXL est conçu pour être facile à utiliser, avec une API conviviale qui peut être utilisée par les développeurs de tous niveaux d'expérience, le rendant accessible aussi bien aux débutants qu'aux utilisateurs avancés.


