[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