begin process at 2008 07 20 15:48:23
1 213 305 membres
219 nouveaux aujourd'hui
14 166 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

BULK COPY EXCEL VERS SQL SERVER


Information sur la source

Catégorie :.NET Source .NET ( DotNet ) Classé sous : excel, sql, bulkcopy Niveau : Débutant Date de création : 28/02/2007 Date de mise à jour : 28/02/2007 17:20:08 Vu / téléchargé: 8 126 / 445

Note :
6 / 10 - par 2 personnes
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note


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

  • 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);
  • }
  • }
  • }
  • }
  • }
  • }
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.
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

28 février 2007 17:20:08 :
Mise en forme
  • signaler à un administrateur
    Commentaire de okok1 le 19/07/2007 19:01:34

    ca me donne une erreur: bulkCopy est introuvable...

  • signaler à un administrateur
    Commentaire de MorpionMx le 19/07/2007 20:20:28 administrateur CS

    elle est déclarée dans le bloc using ;)

Ajouter un commentaire

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS