|
Выгрузка данных из 1с 8.2 управляемый режим в Excel | ☑ | ||
---|---|---|---|---|
0
Эльфийка1
21.01.13
✎
14:00
|
Уважаемые, форумчане!
Как правильно описать открытие книги Excel и запись данных на имеющийся Лист1 в определенные столбцы Нашла вот такой образец (см.ниже), но он создает новый лист, а нужно в имеющийся лист, т.к. там находится шаблон и нужно ограничится одним листом: ИмяФайлаЭксель = "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 = Неопределено; КонецПроцедуры Заранее благодарю!!! |
|||
1
mikecool
21.01.13
✎
14:02
|
Table = Неопределено; заменить на поиск листа в книге
|
|||
2
Эльфийка1
21.01.13
✎
15:11
|
(1) более точнее напишите. пож-та. как эту команду надо писать
|
|||
3
vmv
21.01.13
✎
15:24
|
через Provider=Microsoft.Jet.OLEDB не работал на УФ, предпочитаю старину
// // Общий модуль на клиенте // // ExcelApplication - "глобальная" переменная, // объявленная в в модуль управляемого приложения // и в модцуль обычного приложения, позволяет один раз // создавать ExcelApplication для клиента // // Варианты вызова: // // Add_ComM_ОАС_К.ИнициализированоExcelApplication(Истина) // // Получить значение одного реквизита по ссылке. // Функция ИнициализированоExcelApplication(ВыдаватьСообщения = Истина) Экспорт // ExcelApplication - проверить инициализацию глобальной переменной клиента, если неопредедено, то создаем COMОбъект Если ExcelApplication = Неопределено Тогда Попытка Состояние("Установка соединения с Excel..."); ExcelApplication = Новый COMОбъект("Excel.Application"); Исключение Если ВыдаватьСообщения Тогда Предупреждение("Не удалось установить соединения с Excel."); КонецЕсли; Сообщить(ОписаниеОшибки()); Возврат Ложь; КонецПопытки; КонецЕсли; Возврат Истина; КонецФункции //...вызов где-попало(формы, модули на клиенте) &НаКлиенте Функция Инициализировано_ExcelBook(ФайлИмяПолное) // Если путь к файлу не выбран, выдаем предупреждение и завершение метода Если ПустаяСтрока(ФайлИмяПолное) Тогда ТекстПредупреждения = "Не выбран путь к файлу"; Предупреждение(ТекстПредупреждения, 10); Возврат Ложь; КонецЕсли; // Если файл не существует, выдаем предупреждение и завершение метода ФайлНаДиске = Новый Файл(ФайлИмяПолное); Если НЕ ФайлНаДиске.Существует() Тогда ТекстПредупреждения = "Невозможно открыть файл!" + Символы.ПС + "Из меню ''Файл'' убедитесь, что файл не был переименован, перемещен или удален"; Предупреждение(ТекстПредупреждения, 30); Возврат Ложь; КонецЕсли; // ExcelApplication - проверить инициализацию, если неопредедено, то пытаемся создать COMОбъект Если НЕ Add_ComM_ОАС_К.ИнициализированоExcelApplication(Истина) Тогда Возврат Ложь; КонецЕсли; // ExcelBook - иницализируем переменную и пытаемся открыть книгу Excel ExcelApplication.DisplayAlerts = 1; // Запрещаем вывод на экран Попытка ExcelBook = ExcelApplication.WorkBooks.Open(ФайлИмяПолное); Исключение Сообщить(ОписаниеОшибки()); ExcelApplication = Неопределено; // Терминируем COMОбъект, т.к. вероятно проблемы с ним Возврат Ложь; КонецПопытки; ExcelApplication.ActiveWorkbook.RunAutoMacros(1); // Отключаем макросы Возврат Истина; // Файл существует, ExcelApplication и ExcelBook инициализированы КонецФункции ..... .... ExcelSheet = ExcelBook.Sheets(СтруктураЗагрузки.ЛистНомер); Cell_Text = ExcelSheet.Cells(Row, Column)["Text"]; ..... |
|||
4
Odavid
21.01.13
✎
15:47
|
(3) через OLE Automation медленнее.
ADO быстрее будет. Но через OLE - побольше возможностей работы с книгами и листами. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |