|
v7: ADO и чтение из excel | ☑ | ||
---|---|---|---|---|
0
eshtrey
02.09.19
✎
09:53
|
Как прочитать более 255 колонок из excel файла средствами ADO?
<pre> ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ПутьКФайлу + ";Extended Properties=""Excel 8.0;HDR=NO;IMEX=1"""; ADODBConnection = СоздатьОбъект("ADODB.Connection"); ADODBConnection.CursorLocation = 3; ADODBConnection.ConnectionString = ConnectionString; ADODBConnection.Open(); ADODBCommand = СоздатьОбъект("ADODB.Command"); ADODBCommand.ActiveConnection = ADODBConnection; ADODBCommand.CommandType = 1; ADODBCommand.CommandText = "SELECT * FROM [" + ИмяЛиста + "$]"; ADODBRecordset = ADODBCommand.Execute(); </pre> Ошибка: Microsoft JET Database Engine: Определено слишком много полей. |
|||
1
NorthWind
02.09.19
✎
09:54
|
(0) > Provider=Microsoft.Jet.OLEDB.4.0
провайдера более свежего может попробовать? |
|||
2
eshtrey
02.09.19
✎
09:54
|
Задача: прочитать данные из колонок с номерами более 255
|
|||
3
NorthWind
02.09.19
✎
09:54
|
||||
4
NorthWind
02.09.19
✎
09:56
|
так может у свежего провайдера нет ограничения на 255. Если есть - ну тогда никак.
|
|||
5
Кирпич
02.09.19
✎
09:58
|
наверное в Excel 8.0 не было столько колонок
|
|||
6
Кирпич
02.09.19
✎
10:00
|
||||
7
Кирпич
02.09.19
✎
10:02
|
меняй провайдера вобщем
|
|||
8
Hillsnake
02.09.19
✎
10:42
|
все мои строки дарю
Функция ПолучитьСтрокиСоединенияADODB(Знач ФайлEXCEL) Перем СonnectionString; СonnectionString = Новый Структура; HDR_YES_NO="YES"; // СonnectionString.Вставить("ACE_OLEDB_16_0_EXCEL_12_0_XML" , "Provider=Microsoft.ACE.OLEDB.16.0;Data Source= " + СокрЛП(ФайлEXCEL) + ";Extended Properties=""EXCEL 12.0 XML;HDR="+HDR_YES_NO+";IMEX=1;"""); СonnectionString.Вставить("ACE_OLEDB_16_0_EXCEL_12_0" , "Provider=Microsoft.ACE.OLEDB.16.0;Data Source= " + СокрЛП(ФайлEXCEL) + ";Extended Properties=""EXCEL 12.0;HDR="+HDR_YES_NO+";IMEX=1;"""); СonnectionString.Вставить("ACE_OLEDB_12_0_EXCEL_12_0_XML" , "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " + СокрЛП(ФайлEXCEL) + ";Extended Properties=""EXCEL 12.0 XML;HDR="+HDR_YES_NO+";IMEX=1;"""); СonnectionString.Вставить("ACE_OLEDB_12_0_EXCEL_12_0" , "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " + СокрЛП(ФайлEXCEL) + ";Extended Properties=""EXCEL 12.0;HDR="+HDR_YES_NO+";IMEX=1;"""); СonnectionString.Вставить("ACE_OLEDB_12_0_EXCEL_8_0" , "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " + СокрЛП(ФайлEXCEL) + ";Extended Properties=""EXCEL 8.0;HDR="+HDR_YES_NO+";IMEX=1;"""); // СonnectionString.Вставить("Jet_OLEDB_4_0_EXCEL_8_0" , "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + СокрЛП(ФайлEXCEL) + ";Extended Properties=""EXCEL 8.0;HDR="+HDR_YES_NO+";IMEX=1;"""); СonnectionString.Вставить("Jet_OLEDB_4_0_EXCEL_9_0" , "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + СокрЛП(ФайлEXCEL) + ";Extended Properties=""EXCEL 9.0;HDR="+HDR_YES_NO+";IMEX=1;"""); // СonnectionString.Вставить("EXCEL_Driver_16_0" , "Driver={Microsoft EXCEL Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};Dbq=" + СокрЛП(ФайлEXCEL) + ";Extended Properties=""EXCEL 16.0;HDR="+HDR_YES_NO+";IMEX=1;"""); СonnectionString.Вставить("EXCEL_Driver_12_0" , "Driver={Microsoft EXCEL Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};Dbq=" + СокрЛП(ФайлEXCEL) + ";Extended Properties=""EXCEL 12.0;HDR="+HDR_YES_NO+";IMEX=1;"""); СonnectionString.Вставить("EXCEL_Driver_97_2000" , "Driver={Microsoft EXCEL Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};Dbq=" + СокрЛП(ФайлEXCEL) + ";Extended Properties=""EXCEL 97-2000;HDR="+HDR_YES_NO+";IMEX=1;"""); СonnectionString.Вставить("EXCEL_Driver_5_0_95" , "Driver={Microsoft EXCEL Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};Dbq=" + СокрЛП(ФайлEXCEL) + ";Extended Properties=""EXCEL 5.0/95;HDR="+HDR_YES_NO+";IMEX=1;"""); СonnectionString.Вставить("EXCEL_Driver_5_0" , "Driver={Microsoft EXCEL Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};Dbq=" + СокрЛП(ФайлEXCEL) + ";Extended Properties=""EXCEL 5.0;HDR="+HDR_YES_NO+";IMEX=1;"""); СonnectionString.Вставить("EXCEL_Driver_4_0" , "Driver={Microsoft EXCEL Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};Dbq=" + СокрЛП(ФайлEXCEL) + ";Extended Properties=""EXCEL 4.0;HDR="+HDR_YES_NO+";IMEX=1;"""); СonnectionString.Вставить("EXCEL_Driver_3_0" , "Driver={Microsoft EXCEL Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};Dbq=" + СокрЛП(ФайлEXCEL) + ";Extended Properties=""EXCEL 3.0;HDR="+HDR_YES_NO+";IMEX=1;"""); // СonnectionString.Вставить("EXCEL_Driver_XLSX" , "Driver={Microsoft EXCEL Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};Dbq=" + СокрЛП(ФайлEXCEL) + ";ReadOnly=1;"); СonnectionString.Вставить("EXCEL_Driver_XLS" , "Driver={Microsoft EXCEL Driver (*.xls)};Dbq= " + СокрЛП(ФайлEXCEL) + ";ReadOnly=1;"); Возврат СonnectionString; КонецФункции |
|||
9
eshtrey
02.09.19
✎
11:56
|
Поменял провайдера на
ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ПутьКФайлу + ";Extended Properties=Excel 12.0;"; Recordset все равно не хочет читать из диапазона более 255 колонок Value = ADODBRecordset.Fields(300).Value; Ошибка: ADODB.Recordset: Не удается найти объект в семействе, соответствующий требуемому имени или порядковому номеру. ADODBRecordset.Fields.Count возвращает 255, а на листе 315 колонок. |
|||
10
Kigo_Kigo
02.09.19
✎
12:28
|
а перенести эти 60 колонок на другой лист, не?
|
|||
11
eshtrey
02.09.19
✎
12:38
|
не, надо без разделения листа
|
|||
12
NorthWind
02.09.19
✎
16:17
|
(9) тогда пичалько, выходит что через ADO эксельку с более 255 полей не зачитаешь. Рассматривайте COM и прочие-другие варианты.
|
|||
13
NorthWind
02.09.19
✎
16:18
|
ну или стукните по рукам тем кто такие простыни генерит
|
|||
14
eshtrey
02.09.19
✎
16:28
|
(12)через COM сделал, но хотелось через ADO
|
|||
15
Кирпич
02.09.19
✎
16:35
|
можно сначала прочитать первые 255 колонок, а потом оставшиеся
"SELECT * FROM [" + ИмяЛиста + "$A1:IU1000]"; "SELECT * FROM [" + ИмяЛиста + "$IU1:PK1000]"; |
|||
16
eshtrey
06.09.19
✎
11:30
|
(15)так тоже пробовал и не работает, ошибка для диапазонов после 255 колонки
Microsoft Access Database Engine: Объект "Лист1$...:..." не найден ядром СУБД Microsoft Access. Убедитесь, что объект существует, а его имя и путь к нему указаны правильно Установлен: Microsoft Access Database Engine 2010 Redistributable |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |