Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

[MS SQL SERVER]EXPORTATION DE DONNEES VERS MICROSOFT EXCEL


Information sur la source

Catégorie :Procédure Classé sous : export, jimmy69, mssqlserveur, excel, bouillonnais Niveau : Débutant Date de création : 09/07/2006 Date de mise à jour : 09/07/2006 21:48:28 Vu / téléchargé: 6 814 / 547

Note :
5 / 10 - par 2 personnes
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

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

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

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • Template.xlsTélécharger ce fichier [Réservé aux membres club]13 824 octets

Télécharger le zip

Historique

09 juillet 2006 21:48:28 :
P'tite erreur de saisie !

Commentaires et avis

signaler à un administrateur
Commentaire de floyo le 17/01/2007 15:13:50

Bonjour,

déja merci pour cette belle procédure :D
par contre ca me retourne une erreur quand je lance le debuggage dans l'analyseur de requete :

Serveur: Msg 7399, Niveau 16, État 1, Ligne 1
[Microsoft][ODBC SQL Server Driver][SQL Server]Le fournisseur OLE DB 'Microsoft.Jet.OLEDB.4.0' rapporte une erreur.  

[OLE/DB provider returned message: Le moteur de base de données Microsoft Jet n'a pas pu trouver l'objet 'Feuil1$'. Assurez-vous que l'objet existe et que vous avez correctement saisi son nom et son chemin d'accès.]

Trace de l'erreur OLE DB [OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0' IColumnsInfo::GetColumnsInfo returned 0x80004005:   ].

J'ai fais pas mal de tests, mais aucun n'a été concluant.
Je voudrai faire un export dans un fichier excel de plusieurs tables SQL Server, soit une par onglet excel.

N'hésitez pas à me demander mon code que je ne mets pas ici pur ne pas surcharger le post.

Merci d'avance pour votre aide ;)

signaler à un administrateur
Commentaire de jimmy69 le 17/01/2007 16:30:24

salut salut,

Pour ne pas surcharger cette source, tu devrais poser ta question dans le forum en mettant le lien de la source.

As tu deja essaye avec une seule table avant de passer par plusieurs tables !?

Tu es sur de ton chemin d'acces parce que apparement il rale la dessus !?

dernierement avec quelle version d'excel travailles tu ?!
Moi j'ai fait mes tests avec office 2000 si mes souvenirs sont bons !

Bonne semaine
Christophe

signaler à un administrateur
Commentaire de floyo le 18/01/2007 11:35:03

Salut,

Je vais aller faire un post sur le forum après avoir répondu à tes questions.

Oui, tous mes tests se font pour l'instant sur une seule table et une seule feuille du fichier excel. Je verrai le changement d'onglet plus tard :D
Pour le chemin d'accès, pas de probleme non plus.
Je travail aussi avec l'office 2000.

Après de multiples tests, j'ai reussi à écrire dans le fichier et dans des onglets différents, mais un par un. C'est à dire que je créé un fichier et j'écris dans L'onglet que je veux et non dans Chaque onglet sinon le debuggeur m'affiche :
"MSDTC indisponible sur le serveur"
(MicroSoft Dans Ton C**) si j'ai bien compris, je l'ai profond ^^
Il me manque juste quelques DLL pour SQL server et je pense que je finirai par y arriver

Merci ;) (et désolé de charger le commentaire mais c'est la seule méthode qui mène quelquepart alors je félicite et j'en fais profiter)

signaler à un administrateur
Commentaire de jimmy69 le 18/01/2007 15:28:15

salut salut,

pas de souci mec !

Maintenant ecrire dans des onglets differents ca me parait difficile et je n'ai jamais vu faire ! enfin si je trouve quelques choses je te fais signe !

une petite note pour faire monter mes points, on ne sait jamais que Nix donne des ko a partir d'un certains nombres de points :-) !
Christophe
Un bouillonnnais

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

export excel [ par beny100 ] bonjour, j'ai ecris mon programme en c# et mes données sont contenues dans une table de mon sql serveur 2000 et je cherche une methode pour l'export d contenu de la table sql [ par beny100 ] bonjour,j'ai un problème pendant mon export en excel même quanr le contenu de la table d'ou la requette s'effectue est vide elle me renvoie une page e Affichage de mes tables [ par beny100 ] bonjour, j'ai ecris mon programme et j'ai des requettes sous sql qui me renvoie les donées de ma table mais je voudrais pas que pendant mon export sou Export base de données SqlServer vers Oracle [ par issam164 ] Bonjour, Je veux exporter une base de données SqlServer vers une export de pdf avec sql server 2005 [ par karn ] Bonjour,existe t'il un moyen pour exporter une requete via sql server 2005 en pdf?j'ai vu qu'il y avait une procédure sur le site qu'il le fesait mais executer un lot dts selon des parametres [ par xzonz ] bonjour a toutes et tous  voila ce que j'aimerais fairej'ai un lot dts qui fait l'export d 'une table vers un fichier excel mais il peut arriver que l boucle dans formulaire access [ par chaudier37 ] Bonjour,J'ai un problème dans vb excel.j'ai un tableau dans une feuille excel qui demande des additions. mais ces additions ne sont pas faites tout le traitement fiechier export [ par msatter ] Bonjour tout le monde.Dans le cadre de mon stage je suis amenée a extraire des information d'un fichier (.txt) qui est exporté depuis une BDD Oracle e Procedure exportant une table en excel [ par karn ] Bonjour,est 'il avec possible avec une procedure stocker d'exporter une table au format excel? Lot dts SQL server dans un excel [ par karn ] Bonjour, j'ai creer un lot qui exporte une vue dans un fichier excel, ca marche bien, le seul probleme est que lorsque que je le relance au lieu


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,38 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.