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

ADO.NET Discussion :

lecture de données excel en c#


Sujet :

ADO.NET

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 1
    Points : 1
    Points
    1
    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 : 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
    //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
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    je suis sur que tu ne lui donne pas le bon chemin du fichier.

    Pourquoi le @ ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string chemin = @filepath;
    ?

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

  3. #3
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 795
    Points : 3 173
    Points
    3 173
    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
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  4. #4
    Candidat au Club
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

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

    Informations forums :
    Inscription : Février 2012
    Messages : 1
    Points : 4
    Points
    4
    Par défaut
    Ton problème est dans la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OleDbCommand objCmdSelect = new OleDbCommand("Select * from maPlage1.Feuil1", objconn);
    essai de faire la chose suivante à ça place:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    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.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  6. #6
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 5
    Points : 5
    Points
    5
    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 : 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
    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
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 795
    Points : 3 173
    Points
    3 173
    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
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Malheureusement oui y a la feuille (Feuil1)

  9. #9
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 5
    Points : 5
    Points
    5
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

Discussions similaires

  1. Lecture de donnes Excel
    Par KAKATTAH dans le forum MATLAB
    Réponses: 9
    Dernier message: 27/09/2013, 19h15
  2. probleme lecture de donnée vba sous excel
    Par Bobbbby48 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 22/06/2009, 17h30
  3. Lecture de données dans Excel
    Par kurul1 dans le forum MATLAB
    Réponses: 4
    Dernier message: 16/06/2009, 15h39

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