|
чтение файла Excel через ado - разные типы данных | ☑ | ||
---|---|---|---|---|
0
fimanich
28.09.11
✎
10:10
|
Всем привет!
Читаю данные из файла Excel через ado. Все читается нормально, но: есть колонка "Счет", и счет может быть представлен как строка, например, "60.01", а может как число, например 76. Так вот, которые как строка - нормально считываются, а которые как число - те равны Null. Есть ли какой-то выход в данной ситуации? |
|||
1
fimanich
28.09.11
✎
10:29
|
Отзовитесь, спецы!
|
|||
2
zladenuw
28.09.11
✎
10:31
|
Null когда читаешь с excel или когда ?
|
|||
3
fimanich
28.09.11
✎
10:33
|
Null при чтении, т.е. если в ячейке число (например,76), то
rs.Fields(2).value = Null а если в ячейке строка, например "60.2", то rs.Fields(2).value = "60.2" |
|||
4
ado
28.09.11
✎
10:49
|
Да, через меня нормально только строки читаются. По крайней мере в 1С. Делай в запросе преобразование к строке.
|
|||
5
ado
28.09.11
✎
10:50
|
+(4) Через CAST, например.
|
|||
6
fimanich
28.09.11
✎
11:01
|
(4) !!!! ты именно тот, кто может помочь !!!
(5) помоги, пожалуйста, не соображу, как мне в данном случае запрос переделать, сейчас код такой: QueryString = " |SELECT * |FROM [" + ИмяТаблицы + "] |"; rs = Новый COMОбъект("ADODB.Recordset"); Попытка rs=db.Execute(QueryString); Исключение Сообщить("Не удалось выполнить запрос к файлу Excel |"+ ОписаниеОшибки(),СтатусСообщения.Важное); КонецПопытки; |
|||
7
ado
28.09.11
✎
11:08
|
(6) Звездочку убери, перечисли поля поименно и заключи каждое вот в такую конструкцию: CAST(имя_поля AS char)
|
|||
8
Kerk
28.09.11
✎
11:13
|
(7) Вопрос под тему: АДО поймет русское название колонок?
|
|||
9
ado
28.09.11
✎
11:17
|
(8) А фик его знает. По идее должен.
|
|||
10
ado
28.09.11
✎
11:18
|
+(9) Вообще, это, конечно, от драйвера источника зависит.
|
|||
11
shuhard
28.09.11
✎
11:18
|
(8) зависит от провайдера, во многих случаях помогает []
на крайний случай есть индекс колонки |
|||
12
fimanich
28.09.11
✎
11:25
|
Поменял запрос на такой (никакой код, кроме текста запроса не менял):
QueryString = " |SELECT |CAST(F1 AS char), |CAST(F2 AS char), |CAST(F3 AS char), |CAST(F4 AS char), |CAST(F5 AS char), |CAST(F6 AS char), |CAST(F7 AS char), |CAST(F8 AS char), |CAST(F9 AS char), |CAST(F10 AS char), |CAST(F11 AS char), |CAST(F12 AS char), |CAST(F13 AS char) |FROM [" + ИмяТаблицы + "] |"; В итоге ошибка: {Форма.Форма.Форма(65)}: Ошибка при получении значения атрибута контекста (EOF) Пока НЕ rs.EOF Цикл по причине: Произошла исключительная ситуация (ADODB.Recordset): Операция не допускается, если объект закрыт. |
|||
13
Kerk
28.09.11
✎
11:25
|
(9))(11) Спасибо, Попробую. Если не взлетит, буду делать классическим способом.
|
|||
14
Kerk
28.09.11
✎
11:29
|
Еще вопросик: через dll-ку "ёсел.dll" будет не медленнее читать файл Excel, чем COMОбъект("Excel.Application")?
|
|||
15
shuhard
28.09.11
✎
11:32
|
(12) строку подключения поменяй
поставь в ней заветные ;HDR=No;IMEX=1" и убери CAST |
|||
16
fimanich
28.09.11
✎
11:32
|
(14) наверное, это тестировать надо.
У меня всё же просьба ответить на (12), а то начинаем немного от темы отходить. |
|||
17
fimanich
28.09.11
✎
11:40
|
(15) ты не мог бы строку подключения полностью привести?
Моя первоначальная: ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ИмяФайлаЗагрузки + ";Extended Properties=" + "Excel 8.0;"; А то вот так пишу - ошибку выдает: ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ИмяФайлаЗагрузки + ";Extended Properties=" + "Excel 8.0;HDR=No;IMEX=1"; |
|||
18
shuhard
28.09.11
✎
11:41
|
(17)
MyCon = Новый COMОбъект ("ADODB.Connection"); MyCon.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\111.xls;Extended Properties=""Excel 8.0;HDR=No;IMEX=1"""); MyRst = Новый COMОбъект ("ADODB.Recordset"); MyStr = "select * from [Лист1$]"; MyRst.Open (MyStr, MyCon, 2, 3);//adOpenDynamic, adLockOptimistic Пока НЕ MyRst.EOF() Цикл ... КонецЦикла; MyRst.Close(); MyCon.Close(); КонецПроцедуры |
|||
19
ado
28.09.11
✎
11:43
|
||||
20
fimanich
28.09.11
✎
12:55
|
(18) Огромное спасибо, взлетело!!!
Спасибо всем участникам!!! |
|||
21
shuhard
28.09.11
✎
15:19
|
(20) вот что IMEX животворящий делает
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |