Подключение файлов MS Excel — различия между версиями

Материал из Oktell
Перейти к: навигация, поиск
Строка 64: Строка 64:
 
Для создания связанного сервера используйте следующий SQL-запрос:
 
Для создания связанного сервера используйте следующий SQL-запрос:
  
<pre> EXEC sp_addlinkedserver 'ExcelSource', 'Jet 4.0', 'Microsoft.Jet.OLEDB.4.0',  
+
EXEC sp_addlinkedserver 'ExcelSource', 'Jet 4.0', 'Microsoft.Jet.OLEDB.4.0',  
 
+
 
'c:\MyData\DistExcl.xls', NULL, 'Excel 8.0'   
 
'c:\MyData\DistExcl.xls', NULL, 'Excel 8.0'   
 
+
EXEC sp_addlinkedsrvlogin 'ExcelSource', 'false', NULL, NULL </pre>
EXEC sp_addlinkedsrvlogin 'ExcelSource', 'false', NULL, NULL </pre>
+
  
 
где
 
где
Строка 77: Строка 75:
  
 
  Select * From [ExcelSource]...[Лист1$]
 
  Select * From [ExcelSource]...[Лист1$]
 
 
Подключить Excel-файл можно также с помощью клиентского интерфейса, согласно рисунку
 
 
[[Файл:ПодклЭкс1.PNG]]
 

Версия 09:04, 30 сентября 2014

Наверх

Подключение с помощью Microsoft.ACE.OLEDB.12.0

В данном параграфе описывается пример подключения Excel-файла sample.xlsx на примере сервера MSSQL 2008 SP3 x64.

Шаг 1. Для начала работы скачайте установочные файлы провайдера Microsoft.ACE.OLEDB.12.0 по ссылке http://www.microsoft.com/en-us/download/details.aspx?id=13255.

Если у вас 64-битная версия SQL Server используйте установочный файл AccessDatabaseEngine_x64.exe.


Excel 001.png


Шаг 2. Для установки провайдера используйте запуск файла через командную строку с ключом /passive.

C:\AccessDatabaseEngine_x64.exe /passive 
Excel 004.png Excel 002.png


Шаг 3. Чтобы прилинковать Excel файл выполните следующие запросы в SQL Server Management Studio

exec sp_addlinkedserver @server = 'XlsLnkSrv', 
@srvproduct = 'ACE 12.0', 
@provider = 'Microsoft.ACE.OLEDB.12.0', 
@datasrc = 'C:\Sample.xlsx', 
@provstr = 'Excel 12.0; HDR=Yes'

где

  • XlsLnkSrv - название связанного сервера
  • C:\Sample.xlsx - абсолютный путь к требуемому Excel-файлу


Excel 003.png


Считать данные можно с помощью команды

select * from openquery (XlsLnkSrv, 'Select * from [Sheet1$]')


ВНИМАНИЕ: При возникновении ошибки Cannot get the column information from OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" выполните следующий запрос:

USE [master]
GO
EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1
GO
EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1
GO


Используемые материалы: http://habrahabr.ru/post/219415/ и http://social.msdn.microsoft.com


Подключение с помощью Microsoft Jet 4.0 Ole DB Provider

Скачайте установочные файлы провайдера по ссылке http://www.microsoft.com/en-us/download/details.aspx?id=23734.

Технология Jet 4.0 работает только на 32-битных версиях MSSQL.

Для создания связанного сервера используйте следующий SQL-запрос:

EXEC sp_addlinkedserver 'ExcelSource', 'Jet 4.0', 'Microsoft.Jet.OLEDB.4.0', 

'c:\MyData\DistExcl.xls', NULL, 'Excel 8.0'

EXEC sp_addlinkedsrvlogin 'ExcelSource', 'false', NULL, NULL </pre>

где

  • ExcelSource - название связанного сервера
  • c:\MyData\DistExcl.xls - абсолютный путь к Excel-файлу

Для получения данных из Excel файла используется запрос:

Select * From [ExcelSource]...[Лист1$]