Bulk copy excel vers sql server

Soyez le premier à donner votre avis sur cette source.

Vue 21 562 fois - Téléchargée 1 205 fois

Description

Une question qu'on retrouve souvent sur le forum : Comment copier des données provenant d'un classeur excel vers SQL Server
Voici une méthode simple qui charge en bloc les données vers une table SQL Server

Source / Exemple :


using System;
using System.Data.OleDb;
using System.Data.SqlClient;

namespace BulkCopy
{
    class Program
    {
        static void Main(string[] args)
        {
            // La chaine de connexion au fichier excel (changer DataSource)
            string excelConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Classeur1.xls;Extended Properties=""Excel 8.0;HDR=YES;""";
            // La chaine de connexion au sgbd
            string sqlConnectionString = "Data Source=localhost;Initial Catalog=TestDB;Integrated Security=True";

            // On crée la connexion au classeur excel
            using (OleDbConnection connection = new OleDbConnection(excelConnectionString))
            {
                // Changer les champes et le nom de la feuilles en gardant [$]
                OleDbCommand command = new OleDbCommand("Select ID, Libelle FROM [Feuil1$]", connection);
                connection.Open();

                // On execute la commande
                using (OleDbDataReader reader = command.ExecuteReader())
                {
                    // Et on fait un bulk copy vers la table sql
                    using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
                    {
                        bulkCopy.DestinationTableName = "TestTable";
                        bulkCopy.WriteToServer(reader);
                    }
                }
            }
        }
    }
}

Conclusion :


Prenons comme exemple un fichier excel avec 2 colonnes : ID et Libelle, il faut que la table de destination contienne elle aussi ces 2 colonnes.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

okok1
Messages postés
4
Date d'inscription
dimanche 26 mars 2006
Statut
Membre
Dernière intervention
19 juillet 2007
-
ca me donne une erreur: bulkCopy est introuvable...
MorpionMx
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
38 -
elle est déclarée dans le bloc using ;)
soupiste
Messages postés
79
Date d'inscription
samedi 12 avril 2008
Statut
Membre
Dernière intervention
22 juin 2011
-
super code ! mais lorsque je le modifie pour mon cas d'export de ma feuille, je me retrouve face à un problème de type de données entre la source excel et les colonnes de ma table.
Mes colonnes de table sont de type nvarchar(10) ou nvarchar(100) et float.
Une exception se produit, me disant IMPOSSIBLE DE CONVERTIR LE TYPE STRING DE LA SOURCE DE DONNEES EN NVARCHAR DE LA DESTINATION.
ilham150
Messages postés
9
Date d'inscription
dimanche 19 avril 2009
Statut
Membre
Dernière intervention
22 avril 2010
-
Bonsoir ,
Moi aussi ça me donne une erreur le voilà "Le format de la chaîne d'entrée est incorrect"
il me le donne dans la ligne bluckcopy.WriteToServer(reader)
sachant que j'ai utilisé ce code en asp.net
alors qu'est ce que je dois faire????
guarsa
Messages postés
1
Date d'inscription
vendredi 9 janvier 2009
Statut
Membre
Dernière intervention
7 mai 2010
-
c vraiment génial,
votre code m a beaucoup aidé
un grand merci

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.