J'utilise OleDb pour lire un classeur Excel comportant de nombreuses feuilles.
J'ai besoin de lire les noms des feuilles, mais dans l'ordre où ils sont définis dans la feuille de calcul ; donc, si j'ai un fichier qui ressemble à ceci ;
|_____|_____|____|____|____|____|____|____|____|
|_____|_____|____|____|____|____|____|____|____|
|_____|_____|____|____|____|____|____|____|____|
\__GERMANY__/\__UK__/\__IRELAND__/
Alors je dois obtenir le dictionnaire
1="GERMANY",
2="UK",
3="IRELAND"
J'ai essayé d'utiliser OleDbConnection.GetOleDbSchemaTable()
et cela me donne la liste des noms, mais en les classant par ordre alphabétique. Le tri alphabétique signifie que je ne sais pas à quel numéro de feuille correspond un nom particulier. Donc, j'obtiens ;
GERMANY, IRELAND, UK
qui a changé l'ordre des UK
y IRELAND
.
La raison pour laquelle j'ai besoin qu'elles soient triées est que je dois laisser l'utilisateur choisir une plage de données par nom ou par index ; il peut demander "toutes les données de l'ALLEMAGNE à l'IRLANDE" ou "les données de la feuille 1 à la feuille 3".
Toute idée serait grandement appréciée.
Si je pouvais utiliser les classes interop du bureau, ce serait simple. Malheureusement, ce n'est pas le cas car les classes d'interopérabilité ne fonctionnent pas de manière fiable dans les environnements non interactifs tels que les services Windows et les sites ASP.NET, et je dois donc utiliser OLEDB.
0 votes
Quelle version du fichier Excel lisez-vous ?
33 votes
Comment as-tu dessiné ça et comment as-tu eu la patience de le faire ?
4 votes
@ - il s'agit de rangées de barres verticales (|) et de tirets bas (_) pour le tableau, et de tirets avant et arrière (\/) pour les onglets. Copiez-le dans un éditeur de texte et vous verrez.