Имя: Пароль:
1C
1С v8
Excel через ADO. Есть вопрос
0 ЧессМастер
 
15.07.14
17:05
Всем доброе время суток !

Делаю загрузку из файла Excel в 1С. Возник вопрос.

ВыбФайл - реквизит на форме.

Делаю так:

Connection =Новый COMОбъект("ADODB.Connection");    

флХедер = 0; // в первой строке будут не данные для заголовков (если флХедер=1, то имена полей будут взяты из первой строки таблицы)


СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + СокрЛП(ВыбФайл) + ";Extended Properties=""Excel 12.0;"+?(флХедер=1,"","HDR=NO;")+"IMEX=1;""";

в результате получаю колонки в стиле "F1","F2" (как и надо) (за что в описании отвечает параметр "HDR=NO"

Но все значения в ячейках при таком запросе приводятся к строковому значению. В результате по числовому значению ячейки "4600822005076" я получаю "4,6008220051e+012"

Как можно сделать так чтобы запрос вытаскивал данные в том виде в котором они хранятся (без перевода в строки) ?

В документации указано что за приведение всех значений к строке отвечает параметр IMEX=1

Но если делать запрос без него - ничего не меняется.

Например
СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + СокрЛП(ВыбФайл) + ";Extended Properties=""Excel 12.0;"+?(флХедер=1,"","HDR=NO;")+"""";

выдает такой же результат.
1 YF
 
15.07.14
17:10
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=С:\Raschet.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";

ничего не преобразует
2 МихаилМ
 
15.07.14
19:06
oledb  провайдер excel опрделяет тип данных по первым 8 сточкам выборки.

надеюсь,  Range в запросе указваете.

скорее всего в выборку попадают строки : или заголовки , или
неправильный тип данных в  ячейках.

http://infostart.ru/public/163640/
3 ЧессМастер
 
16.07.14
09:37
(1) Provider=Microsoft.Jet.OLEDB.4.0 - это для Excel 97. для Excel 2007 и выше это не подходит, надо использовать Provider=Microsoft.ACE.OLEDB.12.0