[SQL Server] Interroger un fichier Excel via les commandes OPENQUERY et OPENROWSET

 

-- =============================================

 

-- Author     : KHARROUBI Zouhaier

 

-- Create date: 19/04/2016

 

-- Description: Interroger un fichier Excel via les commandes OPENQUERY et OPENROWSET

 

-- NB : Il faut installer le driver Microsoft.ACE.OLEDB.12.0 32 bits

 

-- et désinstaller le driver 64 bits sur le serveur 64 bits autrement les commandes OPENQUERY et/ou OPENROWSET ne peuvent pas fonctionner

 

-- =============================================

 

--1 Première méthode : Via la commande OPENQUERY

 

----1.1- Créer un link vers le fichier Excel

 

EXEC sp_addlinkedserver

 

@server = 'ExcelLinkSrv2',

 

@srvproduct = 'Excel',

 

@provider = 'Microsoft.ACE.OLEDB.12.0',

 

@datasrc = 'C:\MEKTABA\mektaba.xlsx',

 

@provstr = 'EXCEL 12.0 XML;HDR=YES';

 

----1.2- Lancer la requête SELECT

 

SELECT * FROM OPENQUERY(ExcelLinkSrv2, 'select * from [mektaba_1$]')

 

--2 Deuxième méthode : Via la commande OPENROWSET

 

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0 Xml; HDR=YES; IMEX=1; Database=C:\MEKTABA\mektaba.xlsx',[mektaba_1$])

 

-- IMEX=1 permet de lire toutes les colonnes sous format de texte.

 

-- Il faut renseigner la valeur ZERO dans la clé de registre Hkey_Local_Machine/Software/Microsoft/Jet/4.0/Engines/Excel/TypeGuessRows