---
title: Чтение Excel
slug: общие-обмен-данными-чтение-данных-из-файла/чтение-excel
---

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

```bsl

&НаКлиенте
Асинх Процедура ПрочитатьФайл(Команда)
    
    Расширение = "xlsx";

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

    Расширение = ОписаниеФайла.СсылкаНаФайл.Файл.Расширение;

    ПрочитатьФайлНаСервере(АдресДанных, Расширение);

КонецПроцедуры

&НаСервере
Процедура ПрочитатьФайлНаСервере(АдресДанных, Расширение)

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

КонецПроцедуры 
```

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

&НаКлиенте
Асинх Процедура ПрочитатьФайл(Команда)
    
    Расширение = "xlsx";

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

    Расширение = ОписаниеФайла.СсылкаНаФайл.Файл.Расширение;

    ПрочитатьФайлНаСервере(АдресДанных, Расширение);

КонецПроцедуры

&НаСервере
Процедура ПрочитатьФайлНаСервере(АдресДанных, Расширение)

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

    // Обработка
    
    УдалитьФайлы(ПутьКФайлу);

КонецПроцедуры 
```