Книга знаний

1С:Предприятие / Приемы программирования / OLE, COM

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

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

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика