J'utilise OleDb pour lire à partir d'un classeur Excel avec de nombreuses feuilles.
J'ai besoin de lire les noms des feuilles, mais j'en ai besoin dans l'ordre dans lequel ils sont définis dans la feuille de calcul; donc si j'ai un fichier qui ressemble à ceci;
|_____|_____|____|____|____|____|____|____|____|
|_____|_____|____|____|____|____|____|____|____|
|_____|_____|____|____|____|____|____|____|____|
\__GERMANY__/\__UK__/\__IRELAND__/
Ensuite, j'ai besoin du dictionnaire
1="GERMANY",
2="UK",
3="IRELAND"
J'ai essayé d'utiliser OleDbConnection.GetOleDbSchemaTable()
, et cela me donne la liste des noms, mais cela les trie par ordre alphabétique. Le tri alpha signifie que je ne sais pas à quel numéro de feuille correspond un nom particulier. Alors je reçois;
GERMANY, IRELAND, UK
qui a changé l'ordre de UK
et IRELAND
.
La raison pour laquelle j'ai besoin qu'il soit trié est que je dois laisser l'utilisateur choisir une plage de données par nom ou par index; ils peuvent demander «toutes les données de l'ALLEMAGNE vers l'IRLANDE» ou «les données de la feuille 1 à la feuille 3».
Toutes les idées seraient grandement appréciées.
si je pouvais utiliser les classes d'interopérabilité de bureau, ce serait simple. Malheureusement, je ne peux pas car les classes d'interopérabilité ne fonctionnent pas de manière fiable dans des environnements non interactifs tels que les services Windows et les sites ASP.NET, j'ai donc dû utiliser OLEDB.