Я использую OleDb для чтения из книги Excel с большим количеством листов.
Мне нужно прочитать имена листов, но мне они нужны в том порядке, в котором они определены в электронной таблице; поэтому, если у меня есть файл, который выглядит следующим образом:
|_____|_____|____|____|____|____|____|____|____|
|_____|_____|____|____|____|____|____|____|____|
|_____|_____|____|____|____|____|____|____|____|
\__GERMANY__/\__UK__/\__IRELAND__/
Затем мне нужно получить словарь
1="GERMANY",
2="UK",
3="IRELAND"
Я пробовал использовать OleDbConnection.GetOleDbSchemaTable()
, и это дает мне список имен, но в алфавитном порядке сортирует их. Альфа-сортировка означает, что я не знаю, какой номер листа соответствует определенному имени. Поэтому я получаю:
GERMANY, IRELAND, UK
который изменил порядок UK
и IRELAND
.
Причина, по которой мне нужно ее сортировать, заключается в том, что я должен позволить пользователю выбирать диапазон данных по имени или индексу; они могут запросить "все данные от ГЕРМАНИИ до ИРЛАНДИИ" или "данные от листа 1 до листа 3".
Будем очень благодарны за любые идеи.
Если бы я мог использовать классы взаимодействия в офисе, это было бы просто. К сожалению, я не могу, потому что классы interop не работают надежно в неинтерактивных средах, таких как службы Windows и сайты ASP.NET, поэтому мне нужно было использовать OLEDB.