Problème de lecture d'un document Excel avec OleDB

leozechocolat Messages postés 2 Date d'inscription mardi 5 avril 2011 Statut Membre Dernière intervention 6 avril 2011 - 5 avril 2011 à 21:10
leozechocolat Messages postés 2 Date d'inscription mardi 5 avril 2011 Statut Membre Dernière intervention 6 avril 2011 - 6 avril 2011 à 09:09
Bonjour,

Dans un programme que je développe actuellement pour une association sportive, je rencontre un problème.
En effet, je dois lire différents fichiers Excel (xls) respectant +- le même format. Typiquement, ce sont des document listant les membres de l'association et leur classement.

J'ai décidé d'utiliser OleDB pour faire cela. après avoir ouvert mon fichier, je récupère donc une "sheet", pour cela, il faut que je fasse une requète OleDB:

OleDbDataAdapter myCommand = new OleDbDataAdapter(" SELECT * FROM [" + listname + "$]", con);

Cela fonctionne..; mais seulement dans certains cas. En effet, listname contient le nom de la sheet que j'ai préalablement placé dans une comboBox comme ceci:

DataTable myDataTable = new DataTable();
myDataTable = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

con.Close();
cb_Categ.Items.Clear();
for (int i = 0; i < myDataTable.Rows.Count; i++)
{
DataRow dr = myDataTable.Rows[i];
String tabname = dr["TABLE_NAME"].ToString();
String cat = dr.ItemArray[2].ToString();
String[] catTmp = cat.Split('$');
cb_Categ.Items.Add(catTmp[0]);
cb_Categ.Items.Add(tabname);
}

cb_Categ.SelectedIndex = 0;

pour ensuite récupérer ce fameux nom de la sheet au moment voulu:

String categTmp = cb_Categ.SelectedItem.ToString();

Mon problème est que à certains moments, le nom de la sheet que j'ai récupéré n'est pas accepté par la requete OleDB.

L'erreur est la suivante:

"... Mise entre crochet non valide du nom ' SD$' ..."
ou
"... Le moteur de base de donnée JET n'a pu trouver l'objet 'SD$$' ..."

Je n'arrive pas à trouver de logique dans ces bugs.

Merci d'avance pour votre aide,

Léo Lejeune.

1 réponse

leozechocolat Messages postés 2 Date d'inscription mardi 5 avril 2011 Statut Membre Dernière intervention 6 avril 2011
6 avril 2011 à 09:09
Une façon de résoudre le problème serait de récupérer les sheets via leur index, mais je ne sais pas comment faire ça en OleDB...
0
Rejoignez-nous