|
Загрузка из Экселя | ☑ | ||
---|---|---|---|---|
0
Альбатрос
25.04.12
✎
12:47
|
Кусок кода:
СтрЗапроса = " |SELECT * |FROM [A11:AF] |"; Попытка RecordSet = Об_Конект.Execute(СтрЗапроса); Исключение Сообщить("Не удалось выполнить запрос к файлу Excel |"+ ОписаниеОшибки(),СтатусСообщения.Важное); Возврат; КонецПопытки; Пока НЕ RecordSet.EOF() Цикл Сообщить(""+RecordSet.Fields(0).value); СпАрт.Добавить(Строка(RecordSet.Fields(0).value)); RecordSet.MoveNext(); КонецЦикла; Вопрос: Почему RecordSet.Fields(0).value это значения колонки "В", Как обратиться к колонке "А"? |
|||
1
etc
25.04.12
✎
12:50
|
(0) Странный запрос. Разве после FROM не должно идти имя листа?
|
|||
2
Альбатрос
25.04.12
✎
12:51
|
(1) Нет, это через движок, у меня нет установленного екселя
|
|||
3
aleks-id
25.04.12
✎
12:51
|
(1) не должно. но вот после AF должно идти число обозначающее последнюю строку
|
|||
4
Альбатрос
25.04.12
✎
12:52
|
(3) Опытным путем определил, что если не указывать, то отрабатывается по последнюю строку, сколько бы их там не было. Что мне и нужно.
|
|||
5
Альбатрос
25.04.12
✎
12:55
|
Повторюсь. Загвоздка в том, что RecordSet.Fields(0).value это значения колонки "В". По идее ведь должна быть А.
|
|||
6
etc
25.04.12
✎
13:00
|
(1) так я и предполагал что ты через ADO делаешь.
|
|||
7
etc
25.04.12
✎
13:03
|
Я так делаю:
|
|||
8
Альбатрос
25.04.12
✎
13:08
|
А я так:
СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = E:\остатки.xls"; СтрокаПодключения = СтрокаПодключения + "; Extended Properties = "+"""Excel 12.0"+";HDR=NO;IMEX=1"";"; Об_Конект = Новый COMОбъект("ADODB.Connection"); Попытка Об_Конект.Open(СтрокаПодключения); |
|||
9
Альбатрос
25.04.12
✎
13:10
|
Ну так кто подскажет все таки? Такое ощущени, что указаные строки являются не включаемыми в выборку, как сделать, чтоб они туда попадали?
|
|||
10
etc
25.04.12
✎
13:11
|
(9) может Execute как-то не так отрабаотывает? Попробуй через Open
|
|||
11
Альбатрос
25.04.12
✎
13:14
|
(10) Неее, в моем случае этот метод не пойдет, у меня .connection
|
|||
12
etc
25.04.12
✎
13:17
|
СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = E:\остатки.xls";
СтрокаПодключения = СтрокаПодключения + "; Extended Properties = "+"""Excel 12.0"+";HDR=NO;IMEX=1"";"; Об_Конект = Новый COMОбъект("ADODB.Connection"); Об_Конект.Open(СтрокаПодключения); rs = Новый COMОбъект("ADODB.Recordset"); rs.CursorType = 0; rs.LockType = 1; rs.Open("SELECT * FROM ["+ИмяТаблицы+"]", Об_Конект); Пока НЕ rs.EOF() Цикл Сообщить(""+rs.Fields(0).value); СпАрт.Добавить(Строка(rs.Fields(0).value)); rs.MoveNext(); КонецЦикла; |
|||
13
Альбатрос
25.04.12
✎
13:29
|
(12) А как узнать имя таблицы?
|
|||
14
Альбатрос
25.04.12
✎
13:30
|
У меня ОпенОфис, там написано Лист 1 =)
|
|||
15
aleks-id
25.04.12
✎
13:35
|
выкладывай на депозит свой лист. будем пробовать
|
|||
16
etc
25.04.12
✎
14:17
|
(13) вот так:
|
|||
17
Альбатрос
25.04.12
✎
14:24
|
(16) Спасибо, так заработало, но первую колонку все равно не берет
|
|||
18
Альбатрос
25.04.12
✎
14:24
|
Щас выложу таблицу, гляньте, я наверное чо нибудь туплю
|
|||
19
Альбатрос
25.04.12
✎
14:29
|
Хм... заработало... и такой вопрос сразу: если данные первой колонки пустые, она игнорируется выборкой что ли?
|
|||
20
etc
25.04.12
✎
14:31
|
(19) возможно
|
|||
21
etc
25.04.12
✎
14:32
|
(19) поэтому лучше конечно когда колонки именованные (первая строка таблицы)
|
|||
22
etc
25.04.12
✎
14:33
|
тогда ставишь HDR=YES и получаешь имена колонок
|
|||
23
Альбатрос
25.04.12
✎
14:40
|
(22) Спасибо всем за помощь!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |