Skip to content

Чтение Excel

Обычное чтение

&НаКлиенте
Асинх Процедура ПрочитатьФайл(Команда)
Расширение = "xlsx";
ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов;
ПараметрыДиалога.Заголовок = "Выберите файл";
ПараметрыДиалога.Фильтр = ФильтрПоРасширению(Расширение);
ОписаниеФайла = Ждать ПоместитьФайлНаСерверАсинх(,,,ПараметрыДиалога);
Если ОписаниеФайла = Неопределено Тогда
Возврат;
КонецЕсли;
АдресДанных = ОписаниеФайла.Адрес;
Расширение = ОписаниеФайла.СсылкаНаФайл.Файл.Расширение;
ПрочитатьФайлНаСервере(АдресДанных, Расширение);
КонецПроцедуры
&НаСервере
Процедура ПрочитатьФайлНаСервере(АдресДанных, Расширение)
ПутьКФайлу = ПолучитьИмяВременногоФайла(Расширение);
ДанныеФайла = ПолучитьИзВременногоХранилища(АдресДанных);
ДанныеФайла.Записать(ПутьКФайлу);
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ПутьКФайлу);
КоличествоСтрок = ТабДок.ВысотаТаблицы;
КоличествоКолонок = ТабДок.ШиринаТаблицы;
// Обработка
УдалитьФайлы(ПутьКФайлу);
КонецПроцедуры

Построитель запроса

&НаКлиенте
Асинх Процедура ПрочитатьФайл(Команда)
Расширение = "xlsx";
ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов;
ПараметрыДиалога.Заголовок = "Выберите файл";
ПараметрыДиалога.Фильтр = ФильтрПоРасширению(Расширение);
ОписаниеФайла = Ждать ПоместитьФайлНаСерверАсинх(,,,ПараметрыДиалога);
Если ОписаниеФайла = Неопределено Тогда
Возврат;
КонецЕсли;
АдресДанных = ОписаниеФайла.Адрес;
Расширение = ОписаниеФайла.СсылкаНаФайл.Файл.Расширение;
ПрочитатьФайлНаСервере(АдресДанных, Расширение);
КонецПроцедуры
&НаСервере
Процедура ПрочитатьФайлНаСервере(АдресДанных, Расширение)
ПутьКФайлу = ПолучитьИмяВременногоФайла(Расширение);
ДанныеФайла = ПолучитьИзВременногоХранилища(АдресДанных);
ДанныеФайла.Записать(ПутьКФайлу);
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ПутьКФайлу);
КоличествоСтрок = ТабДок.ВысотаТаблицы;
КоличествоКолонок = ТабДок.ШиринаТаблицы;
// Вариант 1, Произвольная область
ОбластьЯчеек = ТабДок.Область(1, 1, КоличествоСтрок, КоличествоКолонок);
Построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластьЯчеек);
Построитель.Выполнить();
ТаблицаДанных = Построитель.Результат.Выгрузить();
// Вариант 2, Область = вся таблица
Построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область());
ТаблицаДанных = Построитель.Результат.Выгрузить();
// Обработка
УдалитьФайлы(ПутьКФайлу);
КонецПроцедуры