using IronXL;
using System;
using System.Linq;
// Supported for XLSX, XLS, XLSM, XLTX, CSV and TSV
WorkBook workBook = WorkBook.Load("sample.xlsx");
// Select worksheet at index 0
WorkSheet workSheet = workBook.WorkSheets[0];
// Get any existing worksheet
WorkSheet firstSheet = workBook.DefaultWorkSheet;
// Select a cell and return the converted value
int cellValue = workSheet["A2"].IntValue;
// Read from ranges of cells elegantly.
foreach (var cell in workSheet["A2:A10"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Calculate aggregate values such as Min, Max and Sum
decimal sum = workSheet["A2:A10"].Sum();
// Linq compatible
decimal max = workSheet["A2:A10"].Max(c => c.DecimalValue);
Lire les données d'un fichier CSV et les stocker dans une base de données C#
UTILISATION D'IRONXL
Comment lire les données d'un fichier CSV et les stocker dans une base de données C#
Publié janvier 27, 2024
Partager:
Dans le monde numérique d'aujourd'hui, le traitement efficace des données est une tâche importante. L'une des exigences les plus courantes en matière de développement de logiciels est la lecture de données à partir d'un fichier CSV et leur stockage dans une base de données. Ce tutoriel couvre les étapes permettant de lire les données d'un fichier CSV et de les stocker dans une base de données SQL Server à l'aide de C#, en particulier en utilisant la fonctionBibliothèque IronXL. Ce guide est destiné aux débutants et sera expliqué de manière simple et attrayante.
Comprendre les bases
*Qu'est-ce qu'un fichier CSV ?
UN CSV(Valeurs séparées par des virgules) est un fichier texte qui contient des données séparées par des virgules. Il s'agit d'un format populaire pour le transfert de données en raison de sa simplicité et de sa compatibilité avec diverses applications, telles qu'Excel.
Le rôle du serveur SQL et des bases de données
SQL Server est un système de gestion de base de données de Microsoft. Il est utilisé pour stocker et gérer des données de manière structurée. Dans notre cas, nous stockerons les données CSV dans une table SQL Server.
Introduction à IronXL
IronXL est une bibliothèque Excel adaptée aux applications .NET, spécifiquement conçue pour permettre aux développeurs de lire, générer et modifier des fichiers Excel sans avoir besoin de l'interopération Microsoft Office. Cette bibliothèque se distingue par sa compatibilité avec différentes versions et plateformes .NET, notamment .NET Core, .NET Standard et .NET Framework, ainsi que par sa prise en charge de différents systèmes d'exploitation tels que Windows, Linux et macOS. Il s'agit d'une bibliothèque puissante pour l'importation de données, en particulier pour la manipulation de fichiers CSV.
Comment lire et stocker des données à partir de fichiers CSV dans C# ;
Créez un programme de console C# dans Visual Studio.
Installez la bibliothèque CSV à l'aide du gestionnaire de paquets NuGet.
Chargez le fichier CSV dans le programme à l'aide de la bibliothèque.
Créer une connexion avec la base de données.
Lire le contenu du fichier CSV à l'aide de la bibliothèque.
Copiez ce contenu dans la base de données à l'aide de la méthode SqlBulkCopy.
Voici un exemple de code :
using System;
using System.Data;
using System.Data.SqlClient;
using CsvHelper;
namespace CsvReader
{
class Program
{
static void Main(string [] args)
{
string csvPath = @"path\to\your\csv\file.csv";
using (var reader = new StreamReader(csvPath))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
var records = csv.GetRecords<YourModel>();
using (var sqlBulkCopy = new SqlBulkCopy("your_connection_string"))
{
sqlBulkCopy.DestinationTableName = "YourTableName";
sqlBulkCopy.WriteToServer(records.AsDataReader());
}
Console.WriteLine("Data imported successfully!");
}
}
}
}
using System;
using System.Data;
using System.Data.SqlClient;
using CsvHelper;
namespace CsvReader
{
class Program
{
static void Main(string [] args)
{
string csvPath = @"path\to\your\csv\file.csv";
using (var reader = new StreamReader(csvPath))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
var records = csv.GetRecords<YourModel>();
using (var sqlBulkCopy = new SqlBulkCopy("your_connection_string"))
{
sqlBulkCopy.DestinationTableName = "YourTableName";
sqlBulkCopy.WriteToServer(records.AsDataReader());
}
Console.WriteLine("Data imported successfully!");
}
}
}
}
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports CsvHelper
Namespace CsvReader
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim csvPath As String = "path\to\your\csv\file.csv"
Using reader = New StreamReader(csvPath)
Using csv = New CsvReader(reader, CultureInfo.InvariantCulture)
Dim records = csv.GetRecords(Of YourModel)()
Using sqlBulkCopy As New SqlBulkCopy("your_connection_string")
sqlBulkCopy.DestinationTableName = "YourTableName"
sqlBulkCopy.WriteToServer(records.AsDataReader())
End Using
Console.WriteLine("Data imported successfully!")
End Using
End Using
End Sub
End Class
End Namespace
$vbLabelText $csharpLabel
Veillez à remplacer "pathto\yourcsv\file.csv" par le chemin réel de votre fichier CSV, "YourModel" par le modèle représentant vos données CSV, "your_connection_string" par la chaîne de connexion à votre base de données et "YourTableName" par le nom de votre table de base de données.
Mise en place de l'environnement
Conditions préalables
Visual Studio : Assurez-vous que Visual Studio est installé.
SQL Server : SQL Server doit être installé et accessible.
Installation d'IronXL : Installez IronXL en exécutant la commande NuGet suivante :
Install-Package IronXL.Excel
ou
dotnet add package IronXL
Veillez à exécuter ces commandes dans le répertoire du projet où vous souhaitez installer IronXL.
Création d'une table SQL Server
Avant d'importer des données, créez une table de destination dans votre base de données SQL Server. Ce tableau stocke les données CSV.
Remplacez VotreNomDeTable, Colonne1, Colonne2, et TypeDeDonnées par vos données spécifiques.
Guide étape par étape pour importer des données CSV
Tout d'abord, assurez-vous que vous disposez d'un fichier CSV contenant les données que vous souhaitez importer.
Créez un nouveau projet d'application console C# dans Visual Studio.
Installez le paquet NuGet CsvHelper pour lire les fichiers CSV. Pour ce faire, ouvrez la console NuGet Package Manager dans Visual Studio et exécutez la commande suivante :
:installCmd Install-Package CsvHelper
Ajoutez les instructions d'utilisation nécessaires au début de votre fichier de code C# :
using System;
using System.IO;
using CsvHelper;
using System;
using System.IO;
using CsvHelper;
Imports System
Imports System.IO
Imports CsvHelper
$vbLabelText $csharpLabel
Dans votre code, indiquez le chemin d'accès à votre fichier CSV. Par exemple, dans votre code, indiquez le chemin d'accès à votre fichier CSV :
Dim csvFilePath As String = "C:\path\to\your\csv\file.csv"
$vbLabelText $csharpLabel
Assurez-vous de remplacer C:\path\your\csv\file.csv par le chemin réel de votre fichier CSV.
Créer une nouvelle instance de la classe StreamReader pour lire le fichier CSV :
using (var reader = new StreamReader(csvFilePath))
{
// code goes here
}
using (var reader = new StreamReader(csvFilePath))
{
// code goes here
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText $csharpLabel
Crée une nouvelle instance de la classe CsvReader, en lui passant l'objet StreamReader :
using (var reader = new StreamReader(csvFilePath))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
// code goes here
}
using (var reader = new StreamReader(csvFilePath))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
// code goes here
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText $csharpLabel
Optionnellement, configurer l'objet CsvReader avec les paramètres nécessaires. Par exemple :
csv.Configuration.HasHeaderRecord = true;
csv.Configuration.HasHeaderRecord = true;
csv.Configuration.HasHeaderRecord = True
$vbLabelText $csharpLabel
Utilisez la fonction GetRecords<T>() de l'objet CsvReader pour lire les données CSV dans une collection d'objets. Remplacer <T> avec le type d'objet qui représente chaque enregistrement dans le fichier CSV. Par exemple :
var records = csv.GetRecords<YourModel>();
var records = csv.GetRecords<YourModel>();
Dim records = csv.GetRecords(Of YourModel)()
$vbLabelText $csharpLabel
Veillez à remplacer VotreModèle par le nom réel de votre classe de modèle.
Passer en revue les enregistrements et effectuer les traitements ou validations nécessaires :
foreach (var record in records)
{
// code goes here
}
foreach (var record in records)
{
// code goes here
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText $csharpLabel
Si vous le souhaitez, établissez une connexion à votre base de données SQL Server en utilisant ADO.NET ou un outil ORM comme Entity Framework.
Insérez chaque enregistrement dans la base de données en utilisant le mécanisme d'accès à la base de données que vous avez choisi. Par exemple, si vous utilisez ADO.NET, vous pouvez tirer parti de la classe SqlBulkCopy pour insérer efficacement les données en masse.
Gérer les exceptions qui peuvent survenir au cours du processus d'importation et fournir les messages d'erreur ou la journalisation appropriés.
Testez votre application en l'exécutant et en vérifiant que les données CSV sont bien importées dans votre base de données.
C'est tout! Vous avez maintenant réussi à importer des données CSV dans votre base de données SQL Server à l'aide de C#.
Étape 1 : Lecture du fichier CSV
Lorsque l'on commence à importer des données à partir d'un fichier CSV, la première étape cruciale consiste à lire avec précision les données qu'il contient. Chaque ligne d'un fichier CSV représente généralement un enregistrement de données, et chaque enregistrement se compose d'un ou plusieurs champs, séparés par des virgules.
Nous utilisons ensuite la bibliothèque IronXL pour traiter le fichier CSV. Pour lire le fichier CSV à l'aide d'IronXL, vous utiliserez ses classes WorkBook et WorkSheet. La classe WorkBook représente une feuille de calcul entière, qui peut être un fichier Excel ou, dans notre cas, un fichier CSV. Lorsque vous chargez le chemin du fichier CSV dans un objet WorkBook, IronXL traite le fichier CSV comme une feuille de calcul/tableau de données.
using IronXL;
public class CSVReader
{
public DataTable ReadCSV(string filePath)
{
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert to DataTable for easier processing
DataTable dataTable = sheet.ToDataTable(true); // Set to 'true' if your CSV has a header row
return dataTable;
}
}
using IronXL;
public class CSVReader
{
public DataTable ReadCSV(string filePath)
{
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert to DataTable for easier processing
DataTable dataTable = sheet.ToDataTable(true); // Set to 'true' if your CSV has a header row
return dataTable;
}
}
Imports IronXL
Public Class CSVReader
Public Function ReadCSV(ByVal filePath As String) As DataTable
Dim workbook As WorkBook = WorkBook.Load(filePath)
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Convert to DataTable for easier processing
Dim dataTable As DataTable = sheet.ToDataTable(True) ' Set to 'true' if your CSV has a header row
Return dataTable
End Function
End Class
$vbLabelText $csharpLabel
Étape 2 : Établissement d'une connexion à la base de données
L'établissement d'une connexion à votre base de données SQL Server est une étape fondamentale dans le processus de stockage de vos données CSV. Cette étape consiste à établir un lien de communication entre votre application et le serveur de base de données. Une connexion réussie est cruciale car, sans elle, le transfert de données vers la base de données serait impossible.
Cette étape porte sur la création et l'ouverture d'une connexion à l'aide d'une chaîne de connexion en C#. La chaîne de connexion est un élément essentiel car elle contient les informations nécessaires à l'établissement de la connexion. C'est comme une clé qui ouvre la porte de votre base de données.
public class DatabaseConnector
{
private string connectionString = "your_connection_string_here";
public SqlConnection ConnectToDatabase()
{
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
return connection;
}
}
public class DatabaseConnector
{
private string connectionString = "your_connection_string_here";
public SqlConnection ConnectToDatabase()
{
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
return connection;
}
}
Public Class DatabaseConnector
Private connectionString As String = "your_connection_string_here"
Public Function ConnectToDatabase() As SqlConnection
Dim connection As New SqlConnection(connectionString)
connection.Open()
Return connection
End Function
End Class
$vbLabelText $csharpLabel
La variable connectionString contient tous les détails nécessaires pour se connecter à votre serveur SQL. Il comprend généralement le nom du serveur, le nom de la base de données, l'identifiant de l'utilisateur et le mot de passe. Un exemple de chaîne de connexion ressemble à ceci : Server=monadresseServer;Database=monDataBase;User Id=monnomd'utilisateur;Password=monmotdepasse;. Il est essentiel de remplacer ces espaces réservés par les données réelles de votre serveur.
Étape 3 : Stockage des données dans la base de données
Après avoir établi une connexion avec la base de données SQL Server, l'étape critique suivante consiste à stocker les données CSV dans la base de données. Cette étape consiste à transférer les données que vous avez lues et traitées dans votre table SQL Server. Il s'agit d'une partie cruciale du processus de traitement des données, car elle implique la migration réelle des données d'un fichier local vers un serveur de base de données.
Dans cette étape, nous nous concentrerons sur la manière dont les données CSV, désormais stockées dans une Table de données, sont transférées vers la base de données du serveur SQL. Nous utilisons une combinaison de fonctions C# et SQL Server pour accomplir cette tâche efficacement.
public class DataImporter
{
public void ImportData(DataTable dataTable)
{
using (SqlConnection connection = new DatabaseConnector().ConnectToDatabase())
{
// Check if the table exists and create it if it does not.
string tableName = "CSVData"; // Use a valid SQL table name format
string checkTable = $"IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '{tableName}') BEGIN ";
string createTable = "CREATE TABLE " + tableName + " (";
for (int i = 0; i < dataTable.Columns.Count; i++)
{
createTable += $"[{dataTable.Columns [i].ColumnName}] NVARCHAR(MAX)";
if (i < dataTable.Columns.Count - 1)
createTable += ", ";
}
createTable += ") END";
SqlCommand createTableCommand = new SqlCommand(checkTable + createTable, connection);
createTableCommand.ExecuteNonQuery();
// Now we use SqlBulkCopy to import the data
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
bulkCopy.DestinationTableName = tableName;
try
{
bulkCopy.WriteToServer(dataTable);
Console.WriteLine("Data imported successfully!");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
}
public class DataImporter
{
public void ImportData(DataTable dataTable)
{
using (SqlConnection connection = new DatabaseConnector().ConnectToDatabase())
{
// Check if the table exists and create it if it does not.
string tableName = "CSVData"; // Use a valid SQL table name format
string checkTable = $"IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '{tableName}') BEGIN ";
string createTable = "CREATE TABLE " + tableName + " (";
for (int i = 0; i < dataTable.Columns.Count; i++)
{
createTable += $"[{dataTable.Columns [i].ColumnName}] NVARCHAR(MAX)";
if (i < dataTable.Columns.Count - 1)
createTable += ", ";
}
createTable += ") END";
SqlCommand createTableCommand = new SqlCommand(checkTable + createTable, connection);
createTableCommand.ExecuteNonQuery();
// Now we use SqlBulkCopy to import the data
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
bulkCopy.DestinationTableName = tableName;
try
{
bulkCopy.WriteToServer(dataTable);
Console.WriteLine("Data imported successfully!");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
}
Public Class DataImporter
Public Sub ImportData(ByVal dataTable As DataTable)
Using connection As SqlConnection = (New DatabaseConnector()).ConnectToDatabase()
' Check if the table exists and create it if it does not.
Dim tableName As String = "CSVData" ' Use a valid SQL table name format
Dim checkTable As String = $"IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '{tableName}') BEGIN "
Dim createTable As String = "CREATE TABLE " & tableName & " ("
For i As Integer = 0 To dataTable.Columns.Count - 1
createTable &= $"[{dataTable.Columns (i).ColumnName}] NVARCHAR(MAX)"
If i < dataTable.Columns.Count - 1 Then
createTable &= ", "
End If
Next i
createTable &= ") END"
Dim createTableCommand As New SqlCommand(checkTable & createTable, connection)
createTableCommand.ExecuteNonQuery()
' Now we use SqlBulkCopy to import the data
Using bulkCopy As New SqlBulkCopy(connection)
bulkCopy.DestinationTableName = tableName
Try
bulkCopy.WriteToServer(dataTable)
Console.WriteLine("Data imported successfully!")
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Using
End Using
End Sub
End Class
$vbLabelText $csharpLabel
Il commence par ouvrir une connexion à la base de données du serveur SQL à l'aide de la classe DatabaseConnector, ce qui garantit un chemin pour les transactions de données. La méthode vérifie l'existence de la table "CSVData" dans la base de données.
Si la table n'est pas trouvée, il procède à sa création. Le schéma de la table est construit sur la base du schéma DataTable transmis à la méthode, toutes les colonnes étant définies comme NVARCHAR(MAX) pour accueillir toutes les données textuelles. Il s'agit d'une approche générique qui peut être affinée pour correspondre plus étroitement à des types de données spécifiques.
Ensuite, une commande SQL est formulée et exécutée pour vérifier l'existence de la table ou pour la créer. Cela garantit que l'opération de copie en bloc suivante dispose d'une table de destination prête pour l'insertion des données. Une fois la table prête, la classe SqlBulkCopy est utilisée pour transférer les données de la Table de données directement dans la table du serveur SQL. Cette opération est conçue pour des transferts de données en vrac très performants, ce qui permet de traiter efficacement de grands volumes de données.
Étape 4 : Assembler le tout
Après avoir travaillé avec diligence sur les premières étapes de la lecture des données CSV, de l'établissement d'une connexion à la base de données et de la préparation du transfert des données, nous arrivons à l'étape finale et cruciale : l'intégration de ces composants individuels dans un processus cohérent.
Cette intégration se fait dans la méthode Main de votre application C#, où tout est réuni, permettant l'exécution réelle de l'importation des données du fichier CSV vers la base de données du serveur SQL.
class Program
{
static void Main(string [] args)
{
string filePath = "path_to_your_csv_file.csv";
CSVReader reader = new CSVReader();
DataTable dataTable = reader.ReadCSV(filePath);
DataImporter importer = new DataImporter();
importer.ImportData(dataTable);
Console.WriteLine("Data imported successfully!");
}
}
class Program
{
static void Main(string [] args)
{
string filePath = "path_to_your_csv_file.csv";
CSVReader reader = new CSVReader();
DataTable dataTable = reader.ReadCSV(filePath);
DataImporter importer = new DataImporter();
importer.ImportData(dataTable);
Console.WriteLine("Data imported successfully!");
}
}
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim filePath As String = "path_to_your_csv_file.csv"
Dim reader As New CSVReader()
Dim dataTable As DataTable = reader.ReadCSV(filePath)
Dim importer As New DataImporter()
importer.ImportData(dataTable)
Console.WriteLine("Data imported successfully!")
End Sub
End Class
$vbLabelText $csharpLabel
Remplacez chemin_de_votre_fichier_csv.csv par le chemin de votre fichier CSV.
Exécution du projet
Une fois le projet exécuté, vous obtiendrez le résultat suivant. Les messages de réussite indiquent que toutes les opérations ont été exécutées avec succès et que les données ont été copiées dans la base de données.
Data imported successfully!
Vous pouvez maintenant ouvrir SQL Server Management Studio(SSMS) et vérifiez la table sous la base de données. Les données suivantes apparaissent dans le tableau.
Conclusion
Ce tutoriel vous a guidé tout au long du processus de lecture des données d'un fichier CSV et de leur stockage dans une base de données SQL Server à l'aide de C#. En suivant ces étapes et en utilisant la bibliothèque IronXL, vous pouvez gérer efficacement les données CSV dans vos applications C#.
IronXL offre uneessai gratuit pour que les utilisateurs puissent découvrir ses fonctionnalités avant de s'engager dans un achat. Cet essai entièrement fonctionnel permet aux utilisateurs potentiels de tester et d'évaluer le produit dans un environnement réel sans aucun filigrane dans la production. Après la période d'essai, si vous décidez de continuer à utiliser IronXL pour vos projets, la licence du produit commence à partir de $749.
Jordi maîtrise parfaitement Python, C# et C++. Lorsqu'il ne met pas à profit ses compétences chez Iron Software, il se consacre à la programmation de jeux. Partageant des responsabilités en matière de tests de produits, de développement de produits et de recherche, Jordi apporte une valeur ajoutée considérable à l'amélioration continue des produits. Cette expérience variée le stimule et l'engage, et il dit que c'est l'un des aspects qu'il préfère dans son travail chez Iron Software. Jordi a grandi à Miami, en Floride, et a étudié l'informatique et les statistiques à l'université de Floride.
< PRÉCÉDENT Comment exporter une grille de données vers Excel en C#
SUIVANT > Comment convertir un fichier Excel en XML en C#
Des millions d'ingénieurs dans le monde entier lui font confiance
Réservez une démo en direct gratuite
Réservez une démonstration personnelle de 30 minutes.
Pas de contrat, pas de détails de carte, pas d'engagements.
Voici ce à quoi vous pouvez vous attendre :
Une démonstration en direct de notre produit et de ses principales fonctionnalités
Obtenez des recommandations de fonctionnalités spécifiques au projet
Toutes vos questions trouvent réponse pour vous assurer de disposer de toutes les informations dont vous avez besoin. (Aucune obligation de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre gratuit Démonstration en direct
Fiable par plus de 2 millions d'ingénieurs dans le monde entier