
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 :
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));
}
}
}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 ModuleSortie

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 colonne, qui sont automatiquement utilisés comme les noms de colonne du DataTable.
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();
}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()
NextSortie

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));
}
}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
NextSortie

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");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 ModuleCe 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");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.

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes et créer des manuels bien structurés et visuellement attrayants.
Articles connexes



