Bulk copy excel vers sql server

1/5 (6 avis)

Vue 22 473 fois - Téléchargée 1 303 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
soupiste Messages postés 79 Date d'inscription samedi 12 avril 2008 Statut Membre Dernière intervention 22 juin 2011
7 mai 2010 à 11:05
j'ai de mon cote du mal a faire l'importation des colonnes contenant les dates. Quelqu'un pourrait-il m'y aider ?
guarsa Messages postés 1 Date d'inscription vendredi 9 janvier 2009 Statut Membre Dernière intervention 7 mai 2010
7 mai 2010 à 09:44
c vraiment génial,
votre code m a beaucoup aidé
un grand merci
ilham150 Messages postés 9 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 22 avril 2010
22 avril 2010 à 03:57
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????
soupiste Messages postés 79 Date d'inscription samedi 12 avril 2008 Statut Membre Dernière intervention 22 juin 2011
3 nov. 2009 à 12:31
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.
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
19 juil. 2007 à 20:20
elle est déclarée dans le bloc using ;)
Afficher les 6 commentaires

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.