Comment importer Excel vers SQL Server en C#
Dans de nombreux contextes commerciaux différents, l'importation de données d'Excel vers SQL Server est une nécessité courante. Cette activité consiste à lire des données à partir d'un fichier Excel et à les saisir dans une base de données SQL Server. Bien que l'assistant d'exportation soit souvent utilisé, IronXL offre une approche plus programmatique et flexible de la gestion des données. IronXL est une puissante bibliothèque C# capable d'importer des données Excel à partir de fichiers ; Il est donc possible d'accélérer cette opération. À cette fin, cet article propose un guide pratique détaillé qui aborde la configuration, l'exécution et l'amélioration de l'importation de fichiers Excel vers SQL Server à l'aide de C#.
Comment importer un fichier Excel dans SQL Server en C# : Figure 1 - IronXL: La bibliothèque Excel pour C#
How to Import Excel to SQL Server in C
- Configurez votre environnement de développement
- Préparez votre fichier Excel
- Connectez-vous à votre base de données SQL Server
- Lire les données des fichiers Excel à l'aide d'IronXL
- Exporter les données et générer un rapport PDF à l'aide d'IronPDF
- Examiner le rapport PDF
Qu'est-ce qu'IronXL ?
IronXL, parfois appelé IronXL.Excel, est une bibliothèque C# riche en fonctionnalités conçue pour faciliter le travail avec les fichiers Excel dans les applications .NET. Cet outil performant est idéal pour les applications côté serveur car il permet aux développeurs de lire, de créer et de modifier des fichiers Excel sans avoir besoin d'installer Microsoft Excel sur l'ordinateur. IronXL prend en charge les formats Excel 2007 et versions ultérieures (.xlsx) et Excel 97–2003 (.xls), offrant ainsi une grande polyvalence dans la gestion de différentes versions de fichiers Excel. Il permet une manipulation importante des données, comme la manipulation des feuilles de calcul, des lignes et des colonnes, en plus de l'insertion, de la mise à jour et de la suppression des données.
IronXL prend également en charge la mise en forme des cellules et les formules Excel, permettant la génération programmée de feuilles de calcul complexes et bien formatées. Grâce à son optimisation des performances et à sa compatibilité avec de multiples plateformes .NET, notamment .NET Framework, .NET Core et .NET 5/6, IronXL garantit une gestion efficace des ensembles de données volumineux. Grâce à son interface fluide avec d'autres frameworks .NET, il constitue une option flexible pour les développeurs souhaitant intégrer les opérations sur les fichiers Excel dans leurs applications, que ce soit pour des activités d'importation/exportation de données simples ou des systèmes de reporting complexes.
Fonctionnalités clés
Lire et écrire des fichiers Excel
Les développeurs peuvent lire et écrire des données à partir de fichiers Excel grâce à IronXL. Il est simple de créer de nouveaux fichiers Excel et de modifier ceux qui existent déjà.
Aucune installation requise pour Microsoft Excel
IronXL ne nécessite pas l'installation de Microsoft Excel sur l'ordinateur hébergeant l'application, contrairement à certaines autres bibliothèques. C'est pourquoi c'est parfait pour les applications côté serveur.
Prise en charge de différents formats Excel
La bibliothèque offre une grande polyvalence dans la gestion de différents types de fichiers Excel grâce à la prise en charge des formats .xls (Excel 97-2003) et .xlsx (Excel 2007 et versions ultérieures).
Créer un Nouveau Projet Visual Studio
Créer un projet console Visual Studio est simple. Dans Visual Studio, procédez comme suit pour créer une application console :
- Ouvrez Visual Studio : assurez-vous d'avoir installé Visual Studio sur votre ordinateur avant de l'ouvrir.
- Démarrer un nouveau projet : Choisissez
File->New->Project.
Comment importer un fichier Excel dans SQL Server en C# : Figure 2 - Cliquez sur Nouveau ?
- Dans le panneau de gauche de la boîte
Create a new project, choisissez votre langage de programmation préféré, par exemple C#. - Sélectionnez le modèle
Console AppouConsole App (.NET Core)dans la liste des modèles de projet disponibles. - Dans la zone Nom , donnez un nom à votre projet.
Comment importer un fichier Excel dans SQL Server en C# : Figure 3 - Indiquez un nom et un emplacement d'enregistrement.
- Choisissez un emplacement pour enregistrer le projet.
- Cliquez sur Créer pour lancer un projet d'application pour une console.
Comment importer un fichier Excel dans SQL Server en C# : Figure 4 - Cliquez enfin sur " Créer " pour lancer une application.
Installation de la bibliothèque IronXL
L'installation de la bibliothèque IronXL est requise en raison de la prochaine mise à jour. Enfin, pour terminer la procédure, lancez la console du gestionnaire de packages NuGet et saisissez la commande suivante :
Install-Package IronXL.Excel
Comment importer un fichier Excel dans SQL Server en C# : Figure 5 - Saisissez la commande ci-dessus dans la console du gestionnaire de packages NuGet pour installer IronXL.
L'utilisation du gestionnaire de packages NuGet pour rechercher le package IronXL est une autre méthode. Cela nous permet de sélectionner les packages NuGet liés à IronXL à télécharger.
Comment importer un fichier Excel dans SQL Server en C# : Figure 6 - Vous pouvez également rechercher IronXL à l'aide du gestionnaire de packages NuGet et l'installer.
Importez des fichiers Excel vers SQL avec IronXL
Lecture de données depuis Excel avec IronXL
IronXL simplifie le processus de lecture des données à partir de fichiers Excel. L'exemple suivant illustre l'utilisation d'IronXL pour lire des données à partir d'un fichier Excel. Cette méthode consiste à lire les données et à les enregistrer dans une liste de dictionnaires, chacun correspondant à une ligne de la feuille Excel.
using IronXL;
using System;
using System.Collections.Generic;
public class ExcelReader
{
public static List<Dictionary<string, object>> ReadExcelFile(string filePath)
{
// Initialize a list to store data from Excel
var data = new List<Dictionary<string, object>>();
// Load the workbook from the file path provided
WorkBook workbook = WorkBook.Load(filePath);
// Access the first worksheet in the workbook
WorkSheet sheet = workbook.WorkSheets[0];
// Retrieve column headers from the first row
var headers = new List<string>();
foreach (var header in sheet.Rows[0].Columns)
{
headers.Add(header.ToString());
}
// Loop through each row starting from the second row
for (int i = 1; i < sheet.Rows.Count; i++)
{
// Create a dictionary to store the row data associated with column headers
var rowData = new Dictionary<string, object>();
for (int j = 0; j < headers.Count; j++)
{
rowData[headers[j]] = sheet.Rows[i][j].Value;
}
data.Add(rowData);
}
return data;
}
}
using IronXL;
using System;
using System.Collections.Generic;
public class ExcelReader
{
public static List<Dictionary<string, object>> ReadExcelFile(string filePath)
{
// Initialize a list to store data from Excel
var data = new List<Dictionary<string, object>>();
// Load the workbook from the file path provided
WorkBook workbook = WorkBook.Load(filePath);
// Access the first worksheet in the workbook
WorkSheet sheet = workbook.WorkSheets[0];
// Retrieve column headers from the first row
var headers = new List<string>();
foreach (var header in sheet.Rows[0].Columns)
{
headers.Add(header.ToString());
}
// Loop through each row starting from the second row
for (int i = 1; i < sheet.Rows.Count; i++)
{
// Create a dictionary to store the row data associated with column headers
var rowData = new Dictionary<string, object>();
for (int j = 0; j < headers.Count; j++)
{
rowData[headers[j]] = sheet.Rows[i][j].Value;
}
data.Add(rowData);
}
return data;
}
}
Imports IronXL
Imports System
Imports System.Collections.Generic
Public Class ExcelReader
Public Shared Function ReadExcelFile(ByVal filePath As String) As List(Of Dictionary(Of String, Object))
' Initialize a list to store data from Excel
Dim data = New List(Of Dictionary(Of String, Object))()
' Load the workbook from the file path provided
Dim workbook As WorkBook = WorkBook.Load(filePath)
' Access the first worksheet in the workbook
Dim sheet As WorkSheet = workbook.WorkSheets(0)
' Retrieve column headers from the first row
Dim headers = New List(Of String)()
For Each header In sheet.Rows(0).Columns
headers.Add(header.ToString())
Next header
' Loop through each row starting from the second row
For i As Integer = 1 To sheet.Rows.Count - 1
' Create a dictionary to store the row data associated with column headers
Dim rowData = New Dictionary(Of String, Object)()
For j As Integer = 0 To headers.Count - 1
rowData(headers(j)) = sheet.Rows(i)(j).Value
Next j
data.Add(rowData)
Next i
Return data
End Function
End Class
Connexion à SQL Server
Utilisez la classe SqlConnection de l'espace de noms System.Data.SqlClient pour établir une connexion à SQL Server. Assurez-vous de disposer de la chaîne de connexion correcte, qui se compose généralement du nom de la base de données, du nom du serveur et des informations d'authentification. L'exemple suivant explique comment se connecter à une base de données SQL Server et y ajouter des données.
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
public class SqlServerConnector
{
private string connectionString;
// Constructor accepts a connection string
public SqlServerConnector(string connectionString)
{
this.connectionString = connectionString;
}
// Inserts data into the specified table
public void InsertData(Dictionary<string, object> data, string tableName)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// Construct an SQL INSERT command with parameterized values to prevent SQL injection
var columns = string.Join(",", data.Keys);
var parameters = string.Join(",", data.Keys.Select(key => "@" + key));
string query = $"INSERT INTO {tableName} ({columns}) VALUES ({parameters})";
using (SqlCommand command = new SqlCommand(query, connection))
{
// Add parameters to the command
foreach (var kvp in data)
{
command.Parameters.AddWithValue("@" + kvp.Key, kvp.Value ?? DBNull.Value);
}
// Execute the command
command.ExecuteNonQuery();
}
}
}
}
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
public class SqlServerConnector
{
private string connectionString;
// Constructor accepts a connection string
public SqlServerConnector(string connectionString)
{
this.connectionString = connectionString;
}
// Inserts data into the specified table
public void InsertData(Dictionary<string, object> data, string tableName)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// Construct an SQL INSERT command with parameterized values to prevent SQL injection
var columns = string.Join(",", data.Keys);
var parameters = string.Join(",", data.Keys.Select(key => "@" + key));
string query = $"INSERT INTO {tableName} ({columns}) VALUES ({parameters})";
using (SqlCommand command = new SqlCommand(query, connection))
{
// Add parameters to the command
foreach (var kvp in data)
{
command.Parameters.AddWithValue("@" + kvp.Key, kvp.Value ?? DBNull.Value);
}
// Execute the command
command.ExecuteNonQuery();
}
}
}
}
Imports System
Imports System.Collections.Generic
Imports System.Data.SqlClient
Imports System.Linq
Public Class SqlServerConnector
Private connectionString As String
' Constructor accepts a connection string
Public Sub New(ByVal connectionString As String)
Me.connectionString = connectionString
End Sub
' Inserts data into the specified table
Public Sub InsertData(ByVal data As Dictionary(Of String, Object), ByVal tableName As String)
Using connection As New SqlConnection(connectionString)
connection.Open()
' Construct an SQL INSERT command with parameterized values to prevent SQL injection
Dim columns = String.Join(",", data.Keys)
Dim parameters = String.Join(",", data.Keys.Select(Function(key) "@" & key))
Dim query As String = $"INSERT INTO {tableName} ({columns}) VALUES ({parameters})"
Using command As New SqlCommand(query, connection)
' Add parameters to the command
For Each kvp In data
command.Parameters.AddWithValue("@" & kvp.Key, If(kvp.Value, DBNull.Value))
Next kvp
' Execute the command
command.ExecuteNonQuery()
End Using
End Using
End Sub
End Class
Combinaison d'IronXL avec SQL Server
Une fois la logique de lecture des fichiers Excel et d'insertion des données dans une base de données SQL établie, intégrez ces fonctionnalités pour finaliser le processus d'importation. L'application qui suit reçoit des informations d'un fichier Excel et les ajoute à une base de données Microsoft SQL Server.
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
// Define the path to the Excel file, SQL connection string, and target table name
string excelFilePath = "path_to_your_excel_file.xlsx";
string connectionString = "your_sql_server_connection_string";
string tableName = "your_table_name";
// Read data from Excel
List<Dictionary<string, object>> excelData = ExcelReader.ReadExcelFile(excelFilePath);
// Create an instance of the SQL connector and insert data
SqlServerConnector sqlConnector = new SqlServerConnector(connectionString);
foreach (var row in excelData)
{
sqlConnector.InsertData(row, tableName);
}
Console.WriteLine("Data import completed successfully.");
}
}
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
// Define the path to the Excel file, SQL connection string, and target table name
string excelFilePath = "path_to_your_excel_file.xlsx";
string connectionString = "your_sql_server_connection_string";
string tableName = "your_table_name";
// Read data from Excel
List<Dictionary<string, object>> excelData = ExcelReader.ReadExcelFile(excelFilePath);
// Create an instance of the SQL connector and insert data
SqlServerConnector sqlConnector = new SqlServerConnector(connectionString);
foreach (var row in excelData)
{
sqlConnector.InsertData(row, tableName);
}
Console.WriteLine("Data import completed successfully.");
}
}
Imports System
Imports System.Collections.Generic
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Define the path to the Excel file, SQL connection string, and target table name
Dim excelFilePath As String = "path_to_your_excel_file.xlsx"
Dim connectionString As String = "your_sql_server_connection_string"
Dim tableName As String = "your_table_name"
' Read data from Excel
Dim excelData As List(Of Dictionary(Of String, Object)) = ExcelReader.ReadExcelFile(excelFilePath)
' Create an instance of the SQL connector and insert data
Dim sqlConnector As New SqlServerConnector(connectionString)
For Each row In excelData
sqlConnector.InsertData(row, tableName)
Next row
Console.WriteLine("Data import completed successfully.")
End Sub
End Class
Cette classe est chargée d'utiliser IronXL pour lire les données du fichier Excel fourni. La fonction ReadExcelFile charge le classeur Excel, ouvre la première feuille de calcul et récupère les données en parcourant les lignes de cette feuille. Pour faciliter la gestion des tableaux, les informations sont conservées dans une liste de dictionnaires.
Comment importer un fichier Excel dans SQL Server en C# : Figure 7 - Exemple de fichier Excel d'entrée
Cette classe insère les données dans la table de base de données désignée et gère également la connexion à la base de données SQL Server. La méthode InsertData utilise des requêtes paramétrées pour empêcher l'injection SQL et construit une requête SQL INSERT de manière dynamique en fonction des clés du dictionnaire, qui représentent les noms de colonnes.
En utilisant la classe ExcelReader pour lire les données dans la table SQL à partir du fichier Excel et la classe SqlServerConnector pour insérer chaque ligne dans la table SQL Server, la fonction Main gère l'ensemble du processus.
Comment importer un fichier Excel dans SQL Server en C# : Figure 8 - Résultat illustrant une requête réussie sur le serveur SQL Server.
La gestion des erreurs et l'optimisation sont essentielles pour garantir un processus d'importation robuste et efficace. La mise en œuvre d'une gestion robuste des erreurs permet de gérer les problèmes potentiels tels que les fichiers manquants, les formats de données invalides et les exceptions SQL. Voici un exemple d'intégration de la gestion des erreurs.
try
{
// Insert the importing logic here
}
catch (Exception ex)
{
Console.WriteLine("An error occurred: " + ex.Message);
}
try
{
// Insert the importing logic here
}
catch (Exception ex)
{
Console.WriteLine("An error occurred: " + ex.Message);
}
Try
' Insert the importing logic here
Catch ex As Exception
Console.WriteLine("An error occurred: " & ex.Message)
End Try
Conclusion
Enfin, une méthode efficace et fiable pour gérer les fichiers Excel dans les applications .NET consiste à importer les données d'Excel dans une base de données MS SQL à l'aide de C# et d'IronXL. IronXL est compatible avec de nombreux formats Excel et possède des fonctionnalités puissantes qui facilitent la lecture et l'écriture des données Excel sans qu'il soit nécessaire d'installer Microsoft Excel. Grâce à l'intégration de System.Data.SqlClient avec IronXL, les développeurs peuvent facilement déplacer des données entre serveurs SQL à l'aide de requêtes paramétrées pour améliorer la sécurité et empêcher les injections SQL.
Enfin, l'ajout d'IronXL et d'Iron Software à votre boîte à outils pour le développement .NET vous permet de manipuler efficacement Excel, de créer des PDF, d'effectuer une reconnaissance optique de caractères (OCR) et d'utiliser des codes-barres. L'association de la suite flexible d'Iron Software avec la simplicité d'utilisation, l'interopérabilité et les performances d'IronXL garantit un développement rationalisé et des capacités applicatives améliorées. Grâce à des options de licence claires et personnalisées en fonction des exigences du projet, les développeurs peuvent choisir le modèle adapté en toute confiance. En tirant parti de ces avantages, les développeurs peuvent s'attaquer efficacement à toute une série de difficultés tout en maintenant la conformité et la transparence.
Questions Fréquemment Posées
Quelle est la meilleure façon d'importer des données Excel dans SQL Server en utilisant C#?
En utilisant la bibliothèque IronXL, vous pouvez importer efficacement des données Excel dans SQL Server en lisant le fichier Excel et en insérant les données dans la base de données sans avoir besoin de Microsoft Excel installé.
Comment puis-je lire des fichiers Excel en C# sans utiliser Microsoft Excel?
IronXL vous permet de lire des fichiers Excel en C# sans nécessiter Microsoft Excel. Vous pouvez charger le classeur Excel, accéder aux feuilles de travail et extraire des données en utilisant des méthodes simples.
Quelles sont les étapes pour connecter un fichier Excel à SQL Server dans une application C#?
Tout d'abord, utilisez IronXL pour lire le fichier Excel. Ensuite, établissez une connexion à SQL Server en utilisant la classe SqlConnection, et utilisez SqlCommand pour insérer des données dans la base de données SQL.
Pourquoi devrais-je utiliser IronXL pour les opérations Excel dans les applications .NET?
IronXL offre une gestion efficace des données, une compatibilité avec plusieurs plateformes .NET et ne nécessite pas d'installation d'Excel, ce qui le rend idéal pour les applications côté serveur et le traitement de grands ensembles de données.
Comment gérer de grands ensembles de données Excel en C#?
IronXL offre un support robuste pour les grands ensembles de données, vous permettant de lire et de manipuler efficacement les données dans les fichiers Excel et de les intégrer dans des applications sans problèmes de performance.
Quelles stratégies de gestion des erreurs devraient être utilisées lors de l'importation d'Excel vers SQL Server?
Implémentez des blocs try-catch pour gérer les erreurs potentielles telles que fichier introuvable, formats de données invalides ou exceptions SQL pour assurer un processus d'importation fluide.
Puis-je automatiser l'importation de données Excel dans SQL Server avec C# ?
Oui, en utilisant IronXL, vous pouvez automatiser le processus d'importation en écrivant une application C# qui lit des fichiers Excel et insère les données dans SQL Server avec un minimum d'intervention manuelle.
Comment les requêtes paramétrées empêchent-elles les injections SQL en C#?
Les requêtes paramétrées en C# vous permettent d'insérer en toute sécurité des données dans SQL Server en utilisant des espaces réservés pour les paramètres dans les commandes SQL, ce qui permet de prévenir les attaques par injection SQL.
Comment puis-je optimiser la performance de l'importation de données Excel vers SQL Server?
Optimisez la performance en utilisant des insertions par lots, en traitant efficacement de grands ensembles de données avec IronXL et en s'assurant que votre connexion et vos commandes SQL Server sont correctement configurées.
Quelles sont les options de licence pour utiliser IronXL dans un projet?
IronXL offre des options de licence flexibles adaptées aux besoins du projet, permettant aux développeurs de choisir le meilleur plan qui correspond à leurs exigences d'application et à leur budget.



