Я использую OleDb для выбора данных из таблиц Excel. Каждая таблица может содержать множество небольших таблиц и, возможно, мебель, например, заголовки и ярлыки. Таким образом, это может выглядеть так, где у нас есть две таблицы и некоторые заголовки;OleDb подключение к Excel; как выбрать фиксированную ширину, неограниченную высоту?
A B C D 1 . . . . 2 . . . . 3 Table1 . . . 4 Header1 HEADER2 . . 5 h huey . . 6 d dewey . . 7 l loius . . 8 s scrooge . . 9 . . . . 10 . . . . 11 . . . . 12 . . . . 13 . Table 2 . . 14 . HEADER1 HEADER2 HEADER3 15 . 1 foo x 16 . 2 bar y 17 . 3 baz z 18 . . . . 19 . . . .
На предыдущем этапе пользователь выбрал заголовки таблицы, в которой они заинтересованы; в этом случае, глядя на таблицу 2, они будут выбирать диапазон B14:D14
.
Эти настройки сохраняются, и тогда мне нужно запросить эту таблицу. Это может повторяться снова и снова, по мере обновления данных электронных таблиц; в любое время может быть добавлено больше строк, но заголовки всегда фиксируются. Существует дозорный (пустой ряд), обозначающий конец данных
Чтобы выбрать данные в таблице, я пишу такой запрос;
SELECT * FROM [Sheet1$B14:D65535]
выбрать данные в таблице 2, а затем вручную проверки для дозорной строки, но это кажется неудовлетворительно. Excel 2003 может читать только 65535 строк (uint16), но excel 2007 может читать еще много (uint32), поэтому мне нужно написать код, который дает другой запрос для Excel 2003 и 2007 на основе расширения файла (.xls vs. XLS?).
Кто-нибудь знает способ написать запрос, который говорит либо;
- 'выбрать все, что находится внизу и справа от B14'?
- 'выбрать все в столбцах B-> D'
- 'выберите B12: D *' где * означает, что 'все, что можно'
Лист Excel 2003 может содержать 65536 строк, пронумерованных от 0 до 65535 внутри и от 1 до 65536 снаружи. –