Инструмент для загрузки данных в 1с из любого файла excel
Данный метод не требует наличия установленного Microsoft Excel
1. Создаем отчет Excel_Импорт:
Перем Файл, Папка; Процедура ПриОткрытии() Запрос = Форма.Параметр; ТЗ = глТЗ(); Если ФС.ВыбратьФайл(0, Файл, Папка, "Выберите файл", "Файлы импорта", "*.*",) = 0 Тогда Возврат; КонецЕсли; СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+СокрЛП(Папка + Файл)+";Extended Properties=""Excel 8.0;HDR=No; IMEX=1;"""; Connection = СоздатьОбъект("ADODB.Connection"); Connection.Open(СтрокаПодключения); rs = CreateObject("ADODB.Recordset"); rs.ActiveConnection = Connection; rs.CursorType = 1; rs.LockType = 1; cat = СоздатьОбъект("ADOX.Catalog"); cat.ActiveConnection = Connection; rs.Source = "Select " + Запрос + " from ["+cat.Tables(0).Name+"]"; rs.Open(); КоличествоКолонок = rs.Fields.Count; Для НомерКолонки = 0 По КоличествоКолонок - 1 Цикл ТЗ.НоваяКолонка(rs.Fields(НомерКолонки).Name); КонецЦикла; Пока rs.Eof() = 0 Цикл ТЗ.НоваяСтрока(); Для НомерКолонки = 0 По КоличествоКолонок - 1 Цикл ТЗ.УстановитьЗначение(ТЗ.НомерСтроки, НомерКолонки + 1, rs.Fields(НомерКолонки).Value); КонецЦикла; rs.MoveNext(); КонецЦикла; rs.Close(); Форма.Параметр = ТЗ; Форма.Закрыть(); КонецПроцедуры
2. Теперь из любого программного модуля в случае необходимости загрузить какие либо данные из excel добавляем следующий код:
Парам = "F5"; ОткрытьФорму("Отчет.Excel_Импорт", Парам) ТЗ = Парам.Форма.Параметр;
А теперь немного описания:
Переменная Парам — передает список колонок которые необходимо получить из Ексель, возможны варианты: «F1,F2» — вернет 1 и 2 колонку, «*» — вернет все колонки, «F5» — вернет только 5 колонку…
После вызова отчета программа предложит выбрать файл ексель, после чего вернет в приложение ТаблицуЗначений (ТЗ) содержащую требуемые данные из Ексель.