1С: Универсальная загрузка из Excel методом ADO

Опубликовано Опубликовано в рубрике 1C Программирование, Разное

Инструмент для загрузки данных в 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 колонку…
После вызова отчета программа предложит выбрать файл ексель, после чего вернет в приложение ТаблицуЗначений (ТЗ) содержащую требуемые данные из Ексель.