1С Получение данных из Excel при помощи ADO

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

Статья о выгрузке данных из 1с в Excel при помощи ADO

Сначала расскажу о достоинствах и недостатках данного метода:

Достоинства:

  • высокая скорость
  • простота и понятность кода
  • нет необходимости иметь установленный Microsoft Excel

Недостатки:

  • вы получаете таблицу данных без учета группировок

Код:

Процедура Сформировать()
	db=CreateObject("ADODB.Connection");
	rs=CreateObject("ADODB.Recordset");
	db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+СокрЛП(АдресФайла)+";Extended Properties=""Excel 8.0;HDR=No; IMEX=1;""";
	db.Open();
	rs.ActiveConnection = db;
	rs.CursorType = 3;
	rs.LockType = 2;
	cat=СоздатьОбъект("ADOX.Catalog");
	cat.ActiveConnection=db;
	rs.Source = "Select F5, F6, F9 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();
	db.Close();
	ТЗ.ВыбратьСтроку();
КонецПроцедуры

Также прошу обратить внимание на то что в выборке учавствуют только 5, 6 и 9 колонки Excel файла. По выполнению данного кода вы получаете таблицу значений (ТЗ).