[SQL Server] Afficher la liste des classeurs et filtres trouvés dans un fichier Excel

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

-- Author:        Zouhaier KHARROUBI

-- Create date:   27/10/2016

-- Description:   Afficher la liste des classeurs et filtres trouvés dans un fichier Excel

 

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

DECLARE @Chemin_Fichier AS NVARCHAR(MAX)

            ,@Serveur_Lie_Excel AS NVARCHAR(55)

SELECT @Chemin_Fichier ='\\Mektaba\MonFichier.xlsx'

      ,@Serveur_Lie_Excel ='MonServeurLieExcel'

IF EXISTS(SELECT srv.name FROM sys.servers srv WHERE srv.server_id != 0 AND srv.name = @Serveur_Lie_Excel)

      BEGIN

            EXEC master.dbo.sp_dropserver@server=@Serveur_Lie_Excel, @droplogins='droplogins'

      END

IF EXISTS(SELECT * FROM tempdb..sysobjects WHERE id = object_id(N'tempdb..#Liste_Classeurs_Excel'))

      BEGIN

            DROP TABLE #Liste_Classeurs_Excel

      END

CREATE TABLE #Liste_Classeurs_Excel

(

TABLE_NUM        INT IDENTITY (1,1)

,TABLE_CAT        VARCHAR(255) NULL

,TABLE_SCHEM      VARCHAR(255) NULL

,TABLE_NAME       VARCHAR(255) NULL

,TABLE_TYPE       VARCHAR(255) NULL

,REMARKS          VARCHAR(255) NULL

)

EXEC sp_addlinkedserver

@server = @Serveur_Lie_Excel,

@srvproduct = 'Excel',

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

@datasrc = @Chemin_Fichier,

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

INSERT INTO #Liste_Classeurs_Excel

EXEC sp_tables_ex@Serveur_Lie_Excel

--Afficher la liste des classeurs Excel

SELECT * FROM #Liste_Classeurs_Excel WHERE TABLE_NAME NOT LIKE '%filter%'

--Afficher la liste des filtres créées dans le fichier Excel

SELECT * FROM #Liste_Classeurs_Excel WHERE TABLE_NAME LIKE '%filter%'