Я пытаюсь извлечь таблицу значений из таблицы Excel (2003) с помощью vb6, результат которой необходимо сохранить в наборе записей (adodb). Таблица выглядит следующим образом:Игнорируемые столбцы с использованием vb6 для извлечения из excel
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 Recordset 2,8 Библиотека
- MS Excel Библиотека 11,0 Объект
- MS Data Binding Collection VB 6.0 (SP4)
Любая помощь в этом вопросе была бы очень признательна!
(1) По какой-то причине, когда включается десятичная точка в имени столбца, она интерпретируется как #.
Спасибо всем! На полпути через попытку создать Schema.ini
«программно» из KB155512onedaywhen «s отлично post указал меня к решению:
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & filePath & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
Я хотел бы призвать кого-либо с подобными проблемами, чтобы читать почту и комментарии, так как небольшие изменения к решению от одного человека к другому.
По крайней мере, я был на футбольном поле. +1 – Tomalak 2008-10-23 21:04:49