Чтение данных XLS, XLSX запросом без установленного ExcelВ статье рассмотрен один из вариантов чтения данных из файла Excel.
Для соединения используется провайдер Microsoft ACE OLEDB 12.0, что позволяет читать файлы без
установки Excel.
Чтение данных осуществляется запросом на языке SQL. | | Автор статьи: aleks-id | Редакторы: decdmb, Последняя редакция №4 от 30.01.12 | История URL: http://kb.mista.ru/article.php?id=865 | |
Ключевые слова: чтение, xls, xlsx, запрос
Решил выложить небольшой пример по чтению запросом данных из файлов 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();
КонецЦикла; |