Я пытаюсь извлечь таблицу значений из электронной таблицы Excel (2003), используя vb6, результат которой необходимо сохранить в наборе записей (adodb). Таблица выглядит так:
Name Option.1 Option.2 Option.3 Option.4 Option.5 Option.6
-----------------------------------------------------------------
Name1 2 3 4
Name2 2 3 4
Name3 2 3 4
Name4 2 3 4
Name5 2 3 4
Name6 2 3 4
Name7 2 3 4
Name8 2 3 4
Name9 2 3 4 5 6 7
После подключения и выполнения запроса "SELECT * FROM [Sheet1$]
" или даже для столбца "SELECT [Option#6] FROM [Sheet1$]
" (см. Сноску 1) и циклического просмотра результатов мне выдаются Null
значения для строки Name9
, Option.4
-> Option.6
, а не правильные значения 5, 6 и 7. Кажется, что соединение с электронной таблицей использует «наилучшее предположение» для определения допустимых пределов таблицы и принимает только набор количество строк в счет.
Чтобы подключиться к электронной таблице, я попробовал оба провайдера соединений Microsoft.Jet.OLEDB.4.0
и MSDASQL
и получил ту же проблему.
Вот настройки подключения, которые я использую:
Set cn = New ADODB.Connection
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & filePath & ";Extended Properties=Excel 8.0;"
- - - - OR - - - -
.Provider = "MSDASQL"
.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=" & filePath & ";MaxScanRows=0;"
.CursorLocation = adUseClient
.Open
End With
Set rsSelects = New ADODB.Recordset
Set rsSelects = cn.Execute("SELECT [Option#5] FROM " & "[" & strTbl & "]")
Эта проблема возникает, только если имеется более 8 строк (исключая имена столбцов), и я установил MaxScanRow=0
для соединения MSDASQL
, но это привело к тем же результатам.
Известные ссылки на проекты, которые я включил:
- MS ActiveX Data Objects 2.8 Библиотека
- MS ActiveX Data Objects Набор записей 2.8 Библиотека
- Библиотека объектов MS Excel 11.0
- MS Data Binding Collection VB 6.0 (SP4)
Любая помощь в этом вопросе будет очень признателен!
(1) По какой-то причине при включении десятичной точки в имя столбца он интерпретируется как #.
Спасибо всем! На полпути, пытаясь настроить Schema.ini
«программно» из KB155512 onedaywhen превосходный пост указал мне на решение:
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & filePath & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
Я бы посоветовал всем с похожими проблемами читать пост и комментарии, поскольку существуют небольшие различия в решении от одного человека к другому.