Чтение данных XLS, XLSX запросом без установленного ExcelВ статье рассмотрен один из вариантов чтения данных из файла Excel.
<br>Для соединения используется провайдер Microsoft ACE OLEDB 12.0,
<br>что позволяет читать файлы без установки Excel.
<br>Чтение данных осуществляется запросом на языке SQL. | | Автор статьи: aleks-id | Редакторы: decdmb, Последняя редакция №3 от 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();
КонецЦикла; |