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(); КонецЦикла;