Używam OleDb do czytania ze skoroszytu programu Excel z wieloma arkuszami.
Muszę przeczytać nazwy arkuszy, ale potrzebuję ich w kolejności, w jakiej są zdefiniowane w arkuszu kalkulacyjnym; więc jeśli mam plik, który wygląda tak;
|_____|_____|____|____|____|____|____|____|____|
|_____|_____|____|____|____|____|____|____|____|
|_____|_____|____|____|____|____|____|____|____|
\__GERMANY__/\__UK__/\__IRELAND__/
Następnie muszę zdobyć słownik
1="GERMANY",
2="UK",
3="IRELAND"
Próbowałem użyć OleDbConnection.GetOleDbSchemaTable()
i to daje mi listę nazwisk, ale posortuje je alfabetycznie. Sortowanie alfa oznacza, że nie wiem, któremu numerowi arkusza odpowiada dana nazwa. Więc dostaję;
GERMANY, IRELAND, UK
który zmienił kolejność UK
i IRELAND
.
Powodem, dla którego potrzebuję sortowania, jest to, że muszę pozwolić użytkownikowi wybrać zakres danych według nazwy lub indeksu; mogą poprosić o „wszystkie dane z NIEMIEC do IRLANDII” lub „dane z arkusza 1 do arkusza 3”.
Wszelkie pomysły będą mile widziane.
gdybym mógł użyć klas międzyoperacyjnych pakietu office, byłoby to proste. Niestety nie mogę, ponieważ klasy międzyoperacyjne nie działają niezawodnie w nieinteraktywnych środowiskach, takich jak usługi Windows i witryny ASP.NET, więc musiałem użyć OLEDB.