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
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.