Данный метод обладает гораздо большей производительностью и простотой, чем банальный объектный метод через COM соединение.
Все что потребуется это создание 2 объектов
* ADODB.Connection
* ADODB. Recordset
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
// Выполняет загрузку из файла Excel // Параметры // ПутьКФайлу - <Строка> - путь к файлу xls // Автор: ---%%%Gmix 16.03.2006 12:38:48 // Возвращаемое значение: // <Булево> – Истина загрузка произошла // - Ложь загрузки не было Функция ВыполнитьЗагрузку(ПутьКФайлу) Экспорт Файл=Новый Файл(ПутьКФайлу); Если Файл.Существует() Тогда Стр_Файл=Файл.ПолноеИмя; // Отрезаем слеш если он есть в конце пути Стр_Путь=Файл.Путь; Если Прав(Стр_Путь,1)="\" Тогда Стр_Путь=Лев(Стр_Путь,СтрДлина(Стр_Путь)-1); КонецЕсли; // Строка корнекта Стр_Конект = "Driver={Microsoft Excel Driver (*.xls)}; |DriverId=790; |Dbq="+Стр_Файл+"; |DefaultDir="+Стр_Путь+";"; Об_Конект = Новый COMОбъект("ADODB.Connection"); Попытка Об_Конект.Open(Стр_Конект); Исключение Сообщить ("Не возможно подключится к Microsoft Excel Driver!!! |Возможно файл ["+Стр_Файл+"] открыт другим пользователем."); Возврат Ложь; КонецПопытки; // формируем запрос // Здесь есть нюанс первая строка данных всегда будет являться заголовком // если она пустая то имена клонок формируются следующим образом F<Номер колонки> Стр_SQL = "S_elect | F1 as Артикул, | F2 as Наименование, | F3 as ПолноеНаименование | FROM [A1:AZ100000] | WHERE ((F1 Is Not Null) AND (F1 <>''))"; Об_РекордСет = Новый COMОбъект("ADODB.Recordset"); Попытка Об_РекордСет=Об_Конект.Execute(Стр_SQL); Исключение Сообщить("Не удадлось выполнить запрос к файлу Excel |"+ ОписаниеОшибки(),СтатусСообщения.Важное); Возврат Ложь; КонецПопытки; Пока НЕ Об_РекордСет.EOF Цикл // Получаем данные из Об_РекордСет // ... Сообщить(""); Для каждого ОБ_Поле Из Об_РекордСет.Fields Цикл // Пример вывода информации Сообщить(ОБ_Поле.Name,Об_РекордСет.Fields(ОБ_Поле.Name).value); КонецЦикла; // ... Об_РекордСет.MoveNext(); КонецЦикла; Об_Конект.Close(); // Закрываем конект Об_Конект=Неопределено; Об_РекордСет=Неопределено; Возврат Истина; Иначе Сообщить("Файл "+ПутьКФайлу+" не найден!"); Возврат Ложь; КонецЕсли; КонецФункции |