Написана обработка в которой приведены все стандартные способы загрузить данные из excel.
Скачать можно git и инфостарт.
В конфигурации приведено 5 методов загрузки информации из Excel в 1с, нет лишних оберток.
Отлично подходит как болванка, так и для обучению программированию.
#Область OLEСервер &НаКлиенте Процедура ЗагрузкаНаСервереOLE(Команда) нФайл = Новый Файл(ИмяФайла); Если НЕ нФайл.Существует() Тогда Возврат; КонецЕсли; ДвоичДанные = Новый ДвоичныеДанные(ИмяФайла); ОбработкаОЛЕНаСервере(ДвоичДанные, нФайл.Расширение); КонецПроцедуры &НаСервере Процедура ОбработкаОЛЕНаСервере(ДвоичДанные, Расширение) ФайлЭксельНаСервере = ПолучитьИмяВременногоФайла(Расширение); ДвоичДанные.Записать(ФайлЭксельНаСервере); Попытка Эксель = Новый COMОбъект("Excel.Application"); Эксель.DisplayAlerts = 0; Эксель.Visible = 0; Исключение Return; КонецПопытки; // // Работаем с данными Excel // Эксель.Workbooks.Close(); Эксель.Application.Quit(); КонецПроцедуры #КонецОбласти #Область ВнешнийИсточникДанных &НаКлиенте Процедура ЗагрузкаСПомощьюВнешнегоИсточникаДанных(Команда) ЗагрузкаСПомощьюВнешнегоИсточникаДанныхНаСервере(); КонецПроцедуры &НаСервере Процедура ЗагрузкаСПомощьюВнешнегоИсточникаДанныхНаСервере() ПараметрыПодключения = Новый ПараметрыСоединенияВнешнегоИсточникаДанных; ПараметрыПодключения.СтрокаСоединения = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + ИмяФайла + ";"; ВнешниеИсточникиДанных.Excel.УстановитьОбщиеПараметрыСоединения(ПараметрыПодключения); ВнешниеИсточникиДанных.Excel.УстановитьСоединение(); Запрос = Новый Запрос("ВЫБРАТЬ | ExcelТаблицаТаблица1.КолонкаКод, | ExcelТаблицаТаблица1.Колонка2, | ExcelТаблицаТаблица1.Колонка3 КАК Колонка3 |ИЗ | ВнешнийИсточникДанных.Excel.Таблица.Таблица1 КАК ExcelТаблицаТаблица1 |ГДЕ | ExcelТаблицаТаблица1.Колонка3 > 1 |УПОРЯДОЧИТЬ ПО | Колонка3"); ТаблицаЭксельВ1с = Запрос.Выполнить().Выгрузить(); Для Каждого Стр Из ТаблицаЭксельВ1с Цикл Сообщить(Стр); // Обрабатываем КонецЦикла; КонецПроцедуры #КонецОбласти #Область OLEКлиент &НаКлиенте Процедура ЗагрузкаНаКлиентеOLE(Команда) Попытка Эксель = Новый COMОбъект("Excel.Application"); Эксель.DisplayAlerts = 0; Эксель.Visible = 0; Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; ЭксельКнига = Эксель.Workbooks.Open(ИмяФайла); КоличествоСтраниц = ЭксельКнига.Sheets.Count; // Перебираем все листы Для НомерЛиста = 1 По КоличествоСтраниц Цикл Лист = ЭксельКнига.Sheets(НомерЛиста); КоличествоСтрок = Лист.Cells(1, 1).SpecialCells(11).Row; КоличествоКолонок = Лист.Cells(1, 1).SpecialCells(11).Column; // Перебираем строки Для НомерСтроки = 1 По КоличествоСтрок Цикл // Перебираем колонки Для НомерКолонки = 1 По КоличествоКолонок Цикл ЗначениеВЯчейке = Лист.Cells(НомерСтроки, НомерКолонки).Value; // ... Сообщить(ЗначениеВЯчейке); // Обрабатываем занчение // ... КонецЦикла; КонецЦикла; КонецЦикла; Эксель.Workbooks.Close(); Эксель.Application.Quit(); КонецПроцедуры #КонецОбласти #Область ТабличныйДокумент &НаСервере Процедура ЗагрузкаВТабличныйДокументНаСервере() табДок = Новый ТабличныйДокумент; Попытка табДок.Прочитать(ИмяФайла); Исключение Возврат; КонецПопытки; нТабзнч = Новый ТаблицаЗначений; нТабзнч.Колонки.Добавить("КолонкаКод", Новый ОписаниеТипов("Строка")); нТабзнч.Колонки.Добавить("Колонка2", Новый ОписаниеТипов("Строка")); нТабзнч.Колонки.Добавить("Колонка3", Новый ОписаниеТипов("Число")); КоличествоСтрок = табДок.ВысотаТаблицы; Для сч = 2 По КоличествоСтрок Цикл нСтр = нТабзнч.Добавить(); Попытка нСтр.КолонкаКод = Строка(табДок.ПолучитьОбласть("R" + Формат(сч, "ЧГ=0;") + "C" + 1).ТекущаяОбласть.Текст); нСтр.Колонка2 = Строка(табДок.ПолучитьОбласть("R" + Формат(сч, "ЧГ=0") + "C" + 2).ТекущаяОбласть.Текст); нСтр.Колонка3 = Число(табДок.ПолучитьОбласть("R" + Формат(сч, "ЧГ=0") + "C" + 3).ТекущаяОбласть.Текст); Исключение Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Не удалось загрузить строку " + Строка(сч); Сообщение.Сообщить(); КонецПопытки; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ЗагрузкаВТабличныйДокумент(Команда) ЗагрузкаВТабличныйДокументНаСервере(); КонецПроцедуры #КонецОбласти #Область ТабличныйДокументv2Построитель &НаКлиенте Процедура ЗагрузкаВТабличныйДокументv2(Команда) ЗагрузкаВТабличныйДокументНаСервереv2(); КонецПроцедуры &НаСервере Процедура ЗагрузкаВТабличныйДокументНаСервереv2() ТабДок = Новый ТабличныйДокумент; ТабДок.Прочитать(ИмяФайла); ОбластиТаб = ТабДок.Область(1, 1, ТабДок.ВысотаТаблицы, ТабДок.ШиринаТаблицы); Построитель = Новый ПостроительЗапроса; Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластиТаб); Построитель.Выполнить(); ТабДанные = Построитель.Результат.Выгрузить(); Объект.Таблица1.Загрузить(ТабДанные); //Для Каждого Стр Из ТабДанные Цикл // Сообщить(стр); // Обрабатываем //КонецЦикла; КонецПроцедуры #КонецОбласти
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.