Bulk copy excel vers sql server

Soyez le premier à donner votre avis sur cette source.

Vue 21 824 fois - Téléchargée 1 232 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

Messages postés
79
Date d'inscription
samedi 12 avril 2008
Statut
Membre
Dernière intervention
22 juin 2011

j'ai de mon cote du mal a faire l'importation des colonnes contenant les dates. Quelqu'un pourrait-il m'y aider ?
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
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????
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.
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
46
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.