По теме из базы знаний
- Сохранение картинки из MS Excel в файл без использования внешних компонент
- Применение технологии OLE Automation в системе «1С:Предприятие» версии 8.2
- Прайс-заказ с картинками + выгрузка в Excel и загрузка обратно в 1С
- Проверка контрагентов на наличие в реестре коммерческих организаций с повышенным риском совершения правонарушений РБ
- Удаление из файла эксель ненужных страниц средствами 1С без COM и через COM
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
лучше его сразу readonly открывать, и чтобы не пытался внешние ссылки ресольвить: Excel.Workbooks.Open(Путь, 2, True);
а то спрашивает всякое ненужное
ну и да, .Visible = True - это по любому, а то заколебёшься потом задачи снимать. А так хоть пользователь сам сможет его прикрыть.
а то спрашивает всякое ненужное
ну и да, .Visible = True - это по любому, а то заколебёшься потом задачи снимать. А так хоть пользователь сам сможет его прикрыть.
А можно и через ADO читать. Это про XLS (97-2003).
XLSX - через XML можно прочитать. Из БСП копировал себе такой код, обработка ЗагрузкаДанныхИзФайла
Функция ПолучитьКоннектExcel( пИмяФайла, пВызватьИсключение = Ложь ) Экспорт
лРез = Новый COMОбъект("ADODB.Connection");
СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + пИмяФайла +
"; Extended Properties = " + """Excel 8.0"+";HDR=NO;IMEX=1"";";
//подключение к источнику данных
Попытка
лРез.Open(СтрокаПодключения);
Возврат лРез;
Исключение
Если пВызватьИсключение Тогда
лТекстОшибки = ОписаниеОшибки();
лФайл = Новый Файл( пИмяФайла );
Если ВРег( лФайл.Расширение )=".XLSX" Тогда
лТекстОшибки = лТекстОшибки + Символы.ПС + "Сохраните загружаемый файл в формате MS Excel 97-2003 (*.XLS) и попробуйте выполнить загрузку снова.";
КонецЕсли;
ВызватьИсключение( лТекстОшибки );
Иначе
Возврат Неопределено;
КонецЕсли;
КонецПопытки;
КонецФункции
// функция возвращает список значений листов книги Excel
// на входе передается коннект к файлу (см. ПолучитьКоннектExcel)
Функция ПолучитьСписокЛистов( пКоннект ) Экспорт
лСписок = Новый СписокЗначений;
лКаталог = Новый COMОбъект("ADOX.Catalog");
лКаталог.ActiveConnection = пКоннект;
Для Каждого лЛист ИЗ лКаталог.Tables Цикл
лСписок.Добавить( лЛист, Лев( лЛист.Name, СтрДлина( лЛист.Name ) - 1 ) );
КонецЦикла;
Возврат лСписок;
КонецФункции
Функция ПолучитьДанныеЛиста( пКоннект, пЛист ) Экспорт
лКоманда = Новый COMОбъект("ADODB.Command");
лКоманда.ActiveConnection = пКоннект;
лКоманда.CommandText = "SEL ECT * FR OM ["+ пЛист.Name + "]";
лКоманда.CommandType = 1;
лНаборДанных = Новый COMОбъект("ADODB.RecordSet");
лНаборДанных = лКоманда.Execute();
лНаборДанных.MoveFirst();
Возврат лНаборДанных;
КонецФункции
Процедура ПерейтиКСтроке( пНаборДанных, пНомерСтроки ) Экспорт
пНаборДанных.MoveFirst();
Для лНомерСтр = 1 По пНомерСтроки - 1 Цикл
пНаборДанных.MoveNext();
КонецЦикла;
КонецПроцедуры
Процедура ПерейтиКСледующейСтроке( пНаборДанных ) Экспорт
пНаборДанных.MoveNext();
КонецПроцедуры
Функция ДостигнутКонецНабора( пНаборДанных ) Экспорт
Возврат пНаборДанных.EOF <> 0;
КонецФункции
// функция возвращает соответствие с данными строки
Функция ПолучитьДанныеСтроки( пНаборДанных ) Экспорт
лРез = Новый Соответствие;
Для Каждого лПоле из пНаборДанных.fields цикл
лРез.Вставить( лПоле, лПоле.value );
КонецЦикла;
Возврат лРез;
КонецФункции
Функция ПолучитьПоляЛиста( пНаборДанных ) Экспорт
лРез = Новый Массив;
Для Каждого лПоле из пНаборДанных.fields цикл
лРез.Добавить( лПоле );
КонецЦикла;
Возврат лРез;
КонецФункции
ПоказатьXLSX - через XML можно прочитать. Из БСП копировал себе такой код, обработка ЗагрузкаДанныхИзФайла
Можно попробовать.
Excel.Quit();
Попытка
Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(Файл);
Состояние("Обработка файла Microsoft Excel...");
Исключение
Сообщить("Ошибка при открытии файла с помощью Exel!Загрузка не будет произведена!");
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
....
ПоказатьExcel.Quit();
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот