[Appli Windows][c#] Récupération de données dans un fichier xls

cs_Julos59 Messages postés 19 Date d'inscription lundi 3 mai 2004 Statut Membre Dernière intervention 13 mai 2004 - 11 mai 2004 à 09:47
Anormal13 Messages postés 24 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 22 février 2006 - 5 juil. 2005 à 12:09
Bonjour,
voila je cherche comment récuperer des données dans un fichiers xls.
Ca ne doit pas être bien difficile je pense mais comme je débute, ce n'est pas encore un reflexe :-)

merci d'avance

12 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
11 mai 2004 à 13:25
il me semble que le sujet a été souvent abordé ici (dans le forum notamment)
une recherche sur xls (sources & forum) devrait te donner qq bons points de demarrage, que ce soit par "pilotage" d'excel ou par attaque via oledb/jet

Cocoricoooooooo !!!!
0
cs_Julos59 Messages postés 19 Date d'inscription lundi 3 mai 2004 Statut Membre Dernière intervention 13 mai 2004
11 mai 2004 à 16:34
merci
je viens de regarder
et suis entrain d'essayer une connexion OLEDB
mais y a une chose que je ne saisis pas:

OleDbCommand excelCommand = new OleDbCommand("SELECT * FROM [???]", excelConnection);

Il y a dans cette ligne une requête sur le fichier excel mais je ne sais pas quoi mettre comme nom de table après le FROM?

J'ai tenté le nom de ma feuille excel mais ca ne passe pas, j'ai cherché dans le MSDN lib mais je n'ai pas trouvé d'exemple ouu d'expliquation avec excell, donc je ne sais pas quoi mettre.
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
11 mai 2004 à 17:04
il me semble qu'il faut mettre un $ dvant le nom de la feuille (ou apres je sais plus)

Cocoricoooooooo !!!!
0
cs_Julos59 Messages postés 19 Date d'inscription lundi 3 mai 2004 Statut Membre Dernière intervention 13 mai 2004
11 mai 2004 à 17:31
même avec le $ ca ne va pas, j'ai essayé partout.
voila le bout de mon source:
string connectionString;

connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + monFichier + ";Extended Properties=Excel 8.0;";

OleDbConnection excelConnection = new OleDbConnection(connectionString);

excelConnection.Open();

OleDbCommand excelCommand = new OleDbCommand("SELECT * FROM $[Feuille 1]", excelConnection);

OleDbDataReader oRs = excelCommand.ExecuteReader();

L'erreur ne ce fait pas à la compile mais pendant l'exécution
et elle se fait sur la dernière ligne du coup ci dessus.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
11 mai 2004 à 17:40
je pensais plutot à un truc du genre : "SELECT * FROM [Feuille 1$]"

Cocoricoooooooo !!!!
0
cs_Julos59 Messages postés 19 Date d'inscription lundi 3 mai 2004 Statut Membre Dernière intervention 13 mai 2004
11 mai 2004 à 17:49
yep j'ai essayé aussi avant apres, a l'interieur et à l'extérieur des crochets.
mais a chaques fois la même erreur :-(
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
11 mai 2004 à 18:00
et ce fameux message d'erreur c'est ?

sinon voilà un bout de code que je viens de retrouver :
// lecture fichier excel, feuille ABONNES
OleDbConnection excelConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+openFileDialog.FileName+";Extended Properties=Excel 8.0;");
OleDbCommand excelCommand = new OleDbCommand("SELECT * FROM [ABONNES$]", excelConnection);
OleDbDataAdapter excelDataAdapter = new OleDbDataAdapter(excelCommand);
DataSet excelDataSet = new DataSet();
DataRowCollection excelDataRowCollection;

// récupération des données de la table
excelDataAdapter.Fill(excelDataSet, "ABONNES");


Cocoricoooooooo !!!!
0
cs_Julos59 Messages postés 19 Date d'inscription lundi 3 mai 2004 Statut Membre Dernière intervention 13 mai 2004
13 mai 2004 à 17:29
voila la fameuse erreur:
"Une exception non gérée du type 'System.Data.OleDb.OleDbException' s'est produite dans system.data.dll"

et je viens d'essayer avec ton bout de code et j'ai toujours la même erreur ca vient peut etre du fait qu'il y ait des cellules fusionné?
ou peut etre par ce que je n'ai pas excell installé sur ce poste?
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
13 mai 2004 à 17:41
normalement excel n'a pas besoin d'etre installé
c'est sur que les cellules fusionnées ça le fait pas, perso je n'ai jamais reussi a les lire (enfin je n'ai pas réessayer depuis longtemps aussi ^^)

Cocoricoooooooo !!!!
0
cs_Julos59 Messages postés 19 Date d'inscription lundi 3 mai 2004 Statut Membre Dernière intervention 13 mai 2004
13 mai 2004 à 17:56
bon c'est pas le fait qu'elle soit fusionné en tout cas, vu que ca na marche toujours pas meme avec aucune cellule de fusionné
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
13 mai 2004 à 18:10
tente avec un fichier excel vierge sur lequel tu entres qq trucs (sans fusions etc)
je pense que Jet doit etre un peu chatouilleux a la lecture du fichier

Cocoricoooooooo !!!!
0
Anormal13 Messages postés 24 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 22 février 2006
5 juil. 2005 à 12:09
Salut à tous, t'as un probleme sur le nom de ta feuille Excel t'as pas d'espace à mettre.
Un 'tit exemple qui marche tres bien chez moi, c'est en méthode "dite de pilotage" mais g testé j'arrive aussi en attaquant le classeur Excel en OleDb, pour le mot de la fin bon courage pour vos dev.

//déclaration
Excel._Application xlApp;
Excel._Workbook xlClasseur;
Excel._Worksheet xlFeuill1;

//Ouverture de l'appli
xlApp = new Excel.Application();
xlApp.Visible = false; //soit disant ne pas faire apparaitre la feuille Excel

//Ouverture du claseur
xlClasseur = xlApp.Workbooks.Open(fileName,
Missing,Missing,Missing, Missing, Missing, Missing, Missing,Missing,
Missing, Missing,Missing,Missing,Missing,Missing);

//Acces a la feuille
Excel.Sheets xlFeuilles = xlClasseur.Sheets;
xlFeuill1 = (Excel._Worksheet)xlFeuilles["Feuil1"];
etc....
0
Rejoignez-nous