[ms sql server]exportation de donnees vers microsoft excel

Description

Je vous propose de voir comment on peut exporter des donnees
contenues dans une table Ms sql serveur vers un fichier excel.

Il suffit de copier coller le script afin de realiser l'exemple
suivant.

Modifier juste la ligne ci dessous avec vos donnees afin de le faire tourner !

exec('insert into OPENrowset(''' + @provider + ''',''' + @ExcelString + ''',''SELECT NomExcel, PrenomExcel, AgeExcel FROM [Feuil1$]'')

/* Vous n'avez juste qu'a modifier cette requete et la remplacer par le nom de vos colonnes de votre table */

select nom as NomExcel, prenom as PrenomExcel, age as AgeExcel from Personnes')

Dans le .zip, vous trouverez un fichier .xls qui servira de template.
Ce fichier de template ne contient que 3 entetes de colonnes
nommées :

NomExcel
PrenomExcel
AgeExcel

Ensuite on copie la procedure stockee qui se chargera du traitement.

On l'appele et le tour est joue..

Source / Exemple :


CREATE           proc SP_Export_DB_Excel @File_Name as varchar(50) = ''
as
BEGIN

	--Declaration variables
	DECLARE @Cmd varchar(100) --Commande
	DECLARE @fn varchar(50) --Nom du fichier
	DECLARE @provider varchar(100) --Provider
	DECLARE @ExcelString varchar(100) --Connection

--Si pas de nom de fichier en parametre on en definit un 
IF @File_Name = ''
		Select @fn = 'D:\Test.xls'
	ELSE
		Select @fn = 'D:\' + @File_Name + '.xls'

	--On copie les fichiers sur le d
	SELECT @Cmd = 'Copy D:\Template.xls ' + @fn

	--On copie les fichiers sur le d
	EXEC MASTER..XP_CMDSHELL @cmd, NO_OUTPUT

	--On affecte le provider et la chaine de connection a excel
	set @provider = 'Microsoft.Jet.OLEDB.4.0'
	set @ExcelString = 'Excel 8.0;Database=' + @fn

--On excute l'insertion des datas dans le fichier excel
exec('insert into OPENrowset(''' + @provider + ''',''' + @ExcelString + ''',''SELECT NomExcel, PrenomExcel, AgeExcel FROM [Feuil1$]'') 
	select nom as NomExcel, prenom as PrenomExcel, age as AgeExcel from Personnes')
END

Conclusion :


Petite precision si vous travaillez avec excel sur une machine en francais ou anglais
remplacer feuil1 => sheet1 dans la commande exec sinon vous aurez une erreur lors de l'execution de la
procedure stockee.

On peut ainsi mettre sur la feuil2 ou sheet2 une autre exportation de donnees !
Cool non ..!

Je pense qu'il doit etre aussi possible d'executer cela a une certaine heure de la journée ou d'envoyer le
resultat par
par e mail ..

Fab69 nous dira surement comment faire !?

Bonne journée et bonnes vacances
Christophe
Un bouillonnais

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.