Выгружаем в EXCEL с помощью ADO
Неверите ? Смотрите …
Скачать ПримерADO.epf (6.91 kb)
Итак, постановка задачи: Создать с помощью механизма ADO файл excel и выгрузить в него из справочника номенклатура код и наименование.
ИмяФайлаЭксель = "D:\Export.xls"; // Имя создаваемого файла
// Собираем строку подключения
СтрокаПодключения = "
|Provider=Microsoft.Jet.OLEDB.4.0;
|Data Source="+ИмяФайлаЭксель+";
|Extended Properties=""Excel 8.0;HDR=No;"";";
// Создаем объект ADOX.Catalog
Catalog = Новый COMОбъект("ADOX.Catalog");
Catalog.ActiveConnection = СтрокаПодключения;
// Создаем таблицу и добавляем в неё два столбца
Table = Новый COMОбъект("ADOX.Table");
Table.Name = "Table";
Table.Columns.Append("Code");
Table.Columns.Append("Description");
// Присоединяем таблицу
Catalog.Tables.Append(Table);
Table = Неопределено;
Catalog = Неопределено;
// Создаем соединение
Connection = Новый COMОбъект("ADODB.Connection");
Connection.Open(СтрокаПодключения);
Command = Новый COMОбъект("ADODB.Command");
Command.ActiveConnection = Connection;
Command.CommandType = 1;
// Получаем номенклатуру для выгрузки Запрос = Новый Запрос("
|ВЫБРАТЬ
| Номенклатура.Код,
| Номенклатура.Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура");
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
// Заполняем таблицу данными выборки
Пока Выборка.Следующий() Цикл
Command.CommandText = "
|INSERT INTO [Table] VALUES ('"+Выборка.Код+"','"+Выборка.Наименование+"')";
Command.Execute();
КонецЦикла;
// Закрываем соединение
Command = Неопределено;
Connection.Close();
Connection = Неопределено;
Все, готово !
Плюсы данного способа формирования файла excel:
- Большая скорость
- Не требуется запуск самого процесса excel.exe, как это происходит в случае использования OLE-сервера excel.application, а следовательно нет необходимости отслеживать и перехватывать ошибки. Те кто использовал OLE-cоединение – тот поймет о чем я говорю, мало радости когда в случае программной или пользовательской ошибки процесс excel остается висеть в памяти.
- Не требуется самого приложения EXCEL, достаточно что бы на компьютере был установлен OLEDB провайдер Microsoft.Jet.OLEDB.4.0
Минусы тоже имеются:
- Нельзя красиво оформить ячейки – шрифт, рамки и т.д.
P.S. Возможен "комбинированный" способ: с помощбю ADO формируется файл, а затем с помощью OLE "наводится марафет".
Источник: http://infostart.ru/public/65045/

