Précédent   Forum du club des développeurs et IT Pro > Dotnet > Accès aux données > ADO.NET
ADO.NET Forum d'entraide sur le développement avec les services d'accès aux données disponibles avec ADO.NET.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 28/01/2011, 16h18   #1
infomouh
Invité de passage
 
Inscription : 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:
Citation:
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
infomouh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 18h02   #2
WOLO Laurent
Rédacteur/Modérateur

 
Avatar de WOLO Laurent
 
Homme Laurent WOLO
Architecte de base de données
Inscription : mars 2003
Messages : 2 698
Détails du profil
Informations personnelles :
Nom : Homme Laurent WOLO
Âge : 36
Localisation : Congo-Brazzaville

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

Informations forums :
Inscription : mars 2003
Messages : 2 698
Points : 4 070
Points : 4 070
Envoyer un message via Yahoo à WOLO Laurent
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 !
WOLO Laurent est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2011, 10h31   #3
iberserk
Expert Confirmé
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 509
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 31
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 509
Points : 2 743
Points : 2 743
Envoyer un message via MSN à iberserk
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
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2012, 04h41   #4
mamitos
Invité de passage
 
Homme driss
Ingénieur sécurité
Inscription : 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
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.
mamitos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2012, 13h31   #5
Bluedeep
Expert Confirmé Sénior
 
Homme François
Chef de projet NTIC
Inscription : janvier 2007
Messages : 6 544
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Chef de projet NTIC

Informations forums :
Inscription : janvier 2007
Messages : 6 544
Points : 13 893
Points : 13 893
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
Bluedeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2012, 18h26   #6
hboussouf
Invité de passage
 
Hassan BOUSSOUF
Inscription : janvier 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : Hassan BOUSSOUF

Informations forums :
Inscription : janvier 2011
Messages : 5
Points : 4
Points : 4
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 :

Citation:
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
hboussouf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2012, 20h16   #7
iberserk
Expert Confirmé
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 509
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 31
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 509
Points : 2 743
Points : 2 743
Envoyer un message via MSN à iberserk
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
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2012, 13h31   #8
hboussouf
Invité de passage
 
Hassan BOUSSOUF
Inscription : janvier 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : Hassan BOUSSOUF

Informations forums :
Inscription : janvier 2011
Messages : 5
Points : 4
Points : 4
Malheureusement oui y a la feuille (Feuil1)
hboussouf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2012, 19h35   #9
hboussouf
Invité de passage
 
Hassan BOUSSOUF
Inscription : janvier 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : Hassan BOUSSOUF

Informations forums :
Inscription : janvier 2011
Messages : 5
Points : 4
Points : 4
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\"");
hboussouf est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h40.


 
 
 
 
Partenaires

Hébergement Web