Excel: Чтение данных из XLS, XLSX запросом без установленного Excel

В статье рассмотрен один из вариантов чтения данных из файла Excel. Для соединения используется провайдер Microsoft ACE OLEDB 12.0, что позволяет читать файлы без установки Excel. Чтение данных осуществляется запросом на языке SQL.

Решил выложить небольшой пример по чтению запросом данных из файлов Excel.

Сначала надо скачать и установить на компьютер(сервер) вот этот провайдер: http://www.microsoft.com/download/en/details.aspx?id=23734

Для доступа к данным Excel используем следующий код:

   СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = "+Путь;
 
    СтрокаПодключения = СтрокаПодключения + "; Extended Properties = "+"""Excel 
 
12.0"+";HDR=NO;IMEX=1"";";
 
 
 
    // Подключаемся
 
 
 
    Об_Конект = Новый COMОбъект("ADODB.Connection");
 
    Попытка
 
        Об_Конект.Open(СтрокаПодключения); 
 
    Исключение
 
        Сообщить ("Невозможно подключится к Microsoft Excel Driver!!!
 
        |Возможно файл ["+Путь+"] открыт другим пользователем.");
 
        Возврат;
 
    КонецПопытки;
 
 
 
    СтрЗапроса = "
 
    |SELECT *
 
    |FROM [A" + Формат(НачальнаяСтрока,"ЧГ=0") + ":CZ" + Формат(КонечнаяСтрока,"ЧГ=0") + "] 
 
    |"; //данный запрос выбирает все заполненные ячейки листа, однако можно наложить условия 
 
отбора. синтаксис SQL
 
 
 
    Попытка
 
        RecordSet = Об_Конект.Execute(СтрЗапроса);
 
    Исключение
 
        Сообщить("Не удалось выполнить запрос к файлу Excel 
 
        |"+ ОписаниеОшибки(),СтатусСообщения.Важное);
 
        Возврат;
 
    КонецПопытки;
 
 
 
    Пока НЕ RecordSet.EOF() Цикл    
 
        //Дальше обрабатываем RecordSet
 
        ЗначениеКолонки1 = RecordSet.Fields(0).value;
 
        ЗначениеКолонки2 = RecordSet.Fields(1).value;
 
        .... 
 
        RecordSet.MoveNext();    
 
    КонецЦикла;