Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 9 sur 9
  1. #1
    Invité de passage
    Inscrit en
    janvier 2011
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : janvier 2011
    Messages : 1
    Points : 0
    Points
    0

    Par défaut lecture de données excel en c#

    Bonjour,
    Je voulais obtenir et afficher des données excel dans un datagrid alors je me suis pris ainsi:

    Code :
    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
    //Afficher un OpenFileDialog permettant à l'utilisateur de choisir le fichier excel qu'il veut
                OpenFileDialog openFileDialog1 = new OpenFileDialog();
                openFileDialog1.Filter = "Tous les fichiers Excel|*.xlsx;*.xls";
                openFileDialog1.Title = "Selectionner un fichier Excel";
     
                if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    //on récuper le chemin d'acces complet au fichier
                    string filepath = openFileDialog1.FileName.ToString();
                    string chemin = @filepath;
     
                    //Créer une variable de chaine de connexion
                    string sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;"+
                        "Data Source="+ chemin +";"+
                        "Extended Properties=Excel 8.0;";
     
                    //Créer un objet de connexion à l'aide de la chaine de connexion précédente
                    OleDbConnection objconn = new OleDbConnection(sConnectionString);
     
                    //Ouvrir une connexion avec la base de données
                    objconn.Open();
     
                    //Créer uen nouvelle commande OleDb pour renvoyer les données de la feuille de calcul
                    OleDbCommand objCmdSelect = new OleDbCommand("Select * from maPlage1.Feuil1", objconn);
     
                    //Créer un nouvel adaptateur utilisé pour générer un dataset basé sur l'instruction sql précédente
                    OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
     
                    //passer la commande à la carte
                    objAdapter1.SelectCommand = objCmdSelect;
     
                    //créer un nouveau dataset
                    DataSet objDataSet1 = new DataSet();
     
                    //Remplir le dataset
                    objAdapter1.Fill(objDataSet1, "XLData");
     
                    //lier les données au controle datagrid
                    dataGrid1.DataSource = objDataSet1.Tables[0].DefaultView;
                    dataGrid1.SetDataBinding(objDataSet1, "XLData");
                    objconn.Close();
     
               }
    mais après voir choisi le fichier voulu je reçois le message d'erreur suivant:
    Le moteur de base de données Microsoft Jet n'a pas pu trouver l'objet 'Feuil1'.
    Assurez-vous que l'objet existe et que vous avez correctement saisi son nom et son chemin d'accès.
    avez vous une idée d'où ça peut venir?
    Merci d'avance

  2. #2
    Rédacteur

    Avatar de WOLO Laurent
    Homme Profil pro Laurent WOLO
    Architecte de base de données
    Inscrit en
    mars 2003
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent WOLO
    Âge : 37
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : mars 2003
    Messages : 2 725
    Points : 4 434
    Points
    4 434

    Par défaut

    je suis sur que tu ne lui donne pas le bon chemin du fichier.

    Pourquoi le @ ici
    Code :
    string chemin = @filepath;
    ?

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  3. #3
    Expert Confirmé Avatar de iberserk
    Homme Profil pro Bruno IGNACE
    Architecte de base de données
    Inscrit en
    novembre 2004
    Messages
    1 578
    Détails du profil
    Informations personnelles :
    Nom : Homme Bruno IGNACE
    Âge : 32
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2004
    Messages : 1 578
    Points : 2 887
    Points
    2 887

    Par défaut

    Tu dois préciser le nom de l'onglet dans ta connexionString.

    feuil1 est le nom par défaut dans excel... ton fichier doit avoir un nom d'onglet différent c'est tout...

    Pour imager (beaucoups) le nom de l'onglet dans Excel pourrait être comparé au nom d'une table dans ta BDD

  4. #4
    Invité de passage
    Homme Profil pro driss
    Ingénieur sécurité
    Inscrit en
    février 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Nom : Homme driss
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : février 2012
    Messages : 1
    Points : 2
    Points
    2

    Par défaut

    Ton problème est dans la ligne suivante:
    Code :
    OleDbCommand objCmdSelect = new OleDbCommand("Select * from maPlage1.Feuil1", objconn);
    essai de faire la chose suivante à ça place:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //Get the name of First Sheet
                    objconn.Open();
                    DataTable dtExcelSchema;
                    dtExcelSchema = objconn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    string SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
                    objconn.Close();
    
                    // Initialize an OleDbDataAdapter object.
                    OleDbDataAdapter da = new OleDbDataAdapter("select * from [" + SheetName + "]", objconn);
    J'espère que ça aide tout le monde.

  5. #5
    Inactif
    Homme Profil pro François
    Chef de projet NTIC
    Inscrit en
    janvier 2007
    Messages
    6 608
    Détails du profil
    Informations personnelles :
    Nom : Homme François
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : janvier 2007
    Messages : 6 608
    Points : 14 145
    Points
    14 145

    Par défaut

    Citation Envoyé par mamitos Voir le message
    Ton problème est dans la ligne suivante:
    On peut penser qu'en onze mois il a trouvé la solution ou changé de métier.

  6. #6
    Invité de passage
    Profil pro Hassan BOUSSOUF
    Inscrit en
    janvier 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Nom : Hassan BOUSSOUF

    Informations forums :
    Inscription : janvier 2011
    Messages : 5
    Points : 4
    Points
    4

    Par défaut

    Salut;
    En fait, j'ai le même problème
    Le temps que j'ouvre mon fichier Excel (à l'aide d'un OpenFileDialog) pour l'afficher dans un DataGrid, je tombe sur cette erreur :

    Le moteur de base de données Microsoft Jet n'a pas pu trouver l'objet 'Feuil1$'. Assurez-vous que l'objet existe et que vous avez correctement saisi son nom et son chemin d'accès.
    Mon code est le suivant:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    openFileDialog1.InitialDirectory = @"C:"; 
                openFileDialog1.FileName = " ";
                openFileDialog1.Filter = "Tous les fichiers Excel|*.xlsx;*.xls";
                openFileDialog1.ShowDialog();
                if( openFileDialog1.FileNames.Length > 0 )
    		{
                         DataSet Dat;
                         Dat = new DataSet();
                         string filepath = string.Empty;
                         filepath = openFileDialog1.FileName;
                         string chemin = @filepath + @"\";                                                    
     
                         OleDbConnection conn = new  OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source= chemin; Extended Properties=Excel 8.0;");
     
                         OleDbDataAdapter Adap = new OleDbDataAdapter("select * from [Feuil1$]", conn);
     
                         Adap.Fill(Dat);
                         dgvCollars.DataSource = Dat.Tables[0];
                       }
    Si quelqu’un a une solution

  7. #7
    Expert Confirmé Avatar de iberserk
    Homme Profil pro Bruno IGNACE
    Architecte de base de données
    Inscrit en
    novembre 2004
    Messages
    1 578
    Détails du profil
    Informations personnelles :
    Nom : Homme Bruno IGNACE
    Âge : 32
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2004
    Messages : 1 578
    Points : 2 887
    Points
    2 887

    Par défaut

    assurez vous qu'il y a une feuille dans votre fichier excel qui porte le nom "Feuil1$"
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  8. #8
    Invité de passage
    Profil pro Hassan BOUSSOUF
    Inscrit en
    janvier 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Nom : Hassan BOUSSOUF

    Informations forums :
    Inscription : janvier 2011
    Messages : 5
    Points : 4
    Points
    4

    Par défaut

    Malheureusement oui y a la feuille (Feuil1)

  9. #9
    Invité de passage
    Profil pro Hassan BOUSSOUF
    Inscrit en
    janvier 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Nom : Hassan BOUSSOUF

    Informations forums :
    Inscription : janvier 2011
    Messages : 5
    Points : 4
    Points
    4

    Par défaut

    Re salut

    Alors, c'est un peu bête, il faut manipuler la chaîne de connexion comme suit et ça marche :

    Code :
    OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + filepath + "; Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"");

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •