IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Méthode Workbooks.Open() : propriété connectionString non initialisée


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 10
    Par défaut Méthode Workbooks.Open() : propriété connectionString non initialisée
    Bonjour,

    Je suis confronté aujourd'hui à un problème lors de l'ouverture d'une connexion avec la méthode Open().

    En effet, j'ai un message d'erreur disant que la propriété connectionString n'est pas initialisée.

    Je n'ai pas trouvé la solution à mon problème, et les problèmes similaires que j'ai cherché sur ce forum portent sur d'autres fonctions.

    Ce que je souhaite faire dans mon code : au moment du clic sur le bouton btnEnvoyer, j'importe le contenu de mon fichier Excel dans une table SQL Server.

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    using System;
    using System.ComponentModel;
    using System.Web.UI.WebControls.WebParts;
    using System.Web;
    using System.IO;
    using System.Data;
    using System.Data.OleDb;
    using System.Data.SqlClient;
    using System.Configuration;
     
    namespace MySolution.MyFirstWebPart
    {
        [ToolboxItemAttribute(false)]
        public partial class MyFirstWebPart : WebPart
        {    
            public MyFirstWebPart()
            {
            }
     
            protected override void OnInit(EventArgs e)
            {
                base.OnInit(e);
                InitializeControl();
            }
     
            protected void Page_Load(object sender, EventArgs e)
            {
            }
     
            protected void btn1_Click(object sender, EventArgs e)
            {
                lbl1.Text = txtBox1.Text;
                txtBox1.Text = "";
            }
     
            protected void btnEnvoyer_Click(object sender, EventArgs e)
            {
                string excelPath = Path.Combine(HttpRuntime.AppDomainAppPath, "Files/");
                FileUpload1.SaveAs(excelPath);
     
                string conString = string.Empty;
                string extension = Path.GetExtension(FileUpload1.FileName);
                switch (extension)
                {
                    case ".xls": //Excel 97-03
                        conString = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
                        break;
                    case ".xlsx": //Excel 07 or higher
                        conString = ConfigurationManager.ConnectionStrings["Excel07+ConString"].ConnectionString;
                        break;
                }          
     
                conString = string.Format(conString, excelPath);
                using (OleDbConnection excel_con = new OleDbConnection(conString))
                {
                    excel_con.Open(); // Le problème est ici
                    string sheet1 = excel_con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null).Rows[0]["TABLE_NAME"].ToString();
                    DataTable dtExcelData = new DataTable();
     
                    //[OPTIONAL]: It is recommended as otherwise the data will be considered as String by default.
                    dtExcelData.Columns.AddRange(new DataColumn[3] { new DataColumn("CustomerId", typeof(int)),
                    new DataColumn("Name", typeof(string)),
                    new DataColumn("Country",typeof(string)) });
     
                    using (OleDbDataAdapter oda = new OleDbDataAdapter("SELECT * FROM [" + sheet1 + "]", excel_con))
                    {
                        oda.Fill(dtExcelData);
                    }
                    excel_con.Close();
     
                    string consString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
                    using (SqlConnection con = new SqlConnection(consString))
                    {
                        using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
                        {
                            //Set the database table name
                            sqlBulkCopy.DestinationTableName = "dbo.Customers";
     
                            //[OPTIONAL]: Map the Excel columns with that of the database table
                            sqlBulkCopy.ColumnMappings.Add("CustomerId", "CustomerId");
                            sqlBulkCopy.ColumnMappings.Add("Name", "Name");
                            sqlBulkCopy.ColumnMappings.Add("Country", "Country");
                            con.Open();
                            sqlBulkCopy.WriteToServer(dtExcelData);
                            con.Close();
                        }
                    }
                }
            }
        }
    }
    Je continue mes recherches dans l'attente de vos réponses.
    Merci.

    Strix

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Par défaut
    Peux tu vérifier que la variable conString est bien remplie...?

    Est-ce normal le + dans la clé : Excel07+ConString

    A+

  3. #3
    Membre habitué
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 10
    Par défaut
    Bonjour Dokho,

    Apparemment, la variable conString n'est pas remplie, mais je ne vois pas pourquoi.

    Pour le + dans la clé, je n'ai pas trop regardé encore, car j'essaye d'importer un fichier .xls pour le moment.

    Cordialement

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Par défaut
    Citation Envoyé par -Strix- Voir le message
    Bonjour Dokho,

    Apparemment, la variable conString n'est pas remplie, mais je ne vois pas pourquoi.

    Pour le + dans la clé, je n'ai pas trop regardé encore, car j'essaye d'importer un fichier .xls pour le moment.

    Cordialement
    Si la variable n'est pas remplie c'est que ta comparaison dans ton switch est mauvaise. Tu devrais faire "extension.ToLower()" pour être certain...
    Tu pourrais même te passer de ton switch et mettre directement le nom de l'extension comme clé dans ton web.config...

  5. #5
    Membre habitué
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 10
    Par défaut
    La variable extension n'est pas remplie non plus. Je commence à ne plus rien comprendre

    Par contre, je ne trouve pas le fichier web.config dans mon projet (SharePoint WebPart).

    Edit 1 : j'ai le fichier web.config avec les clés inscrites dedans, mais j'ai toujours le soucis des variables vides. Le code en tant que Web Application fonctionne bien, mais pas en tant que SharePoint WebPart.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Par défaut
    Citation Envoyé par -Strix- Voir le message
    La variable extension n'est pas remplie non plus. Je commence à ne plus rien comprendre

    Par contre, je ne trouve pas le fichier web.config dans mon projet (SharePoint WebPart).

    Edit 1 : j'ai le fichier web.config avec les clés inscrites dedans, mais j'ai toujours le soucis des variables vides. Le code en tant que Web Application fonctionne bien, mais pas en tant que SharePoint WebPart.
    C'est normal car tu n'as pas mis de nom de fichier lors de la sauvegarde...(dans le saveas...)

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Par défaut
    Malheureusement tu ne pourras pas mettre en X86 car sharepoint ne tourne qu'en 64bit. Tu devras installer le provider xls en 64bit (si il en existe 1)

  8. #8
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    De ce que j'ai vu JET n'existe pas en 64 bits. Je sais pas si le passage à ACE se fait aisément mais c'est ce qui est préconisé sur les différentes sources que j'ai trouvées.

Discussions similaires

  1. [XL-2013] Méthode Workbooks.Open erreur 1004 non géré en natif
    Par ranzoken dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/08/2015, 11h25
  2. [VBA] Boucler sur la méthode Workbooks.Open plante Excel
    Par juliusmarat dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/09/2014, 17h39
  3. La propriété ConnectionString n'a pas été initialisée
    Par Ninpa dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 02/07/2013, 11h37
  4. Réponses: 9
    Dernier message: 07/10/2009, 16h30
  5. Réponses: 12
    Dernier message: 22/08/2009, 18h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo