[MS SQL SERVER]EXPORTATION DE DONNEES VERS MICROSOFT EXCEL

floyo Messages postés 5 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 18 janvier 2007 - 17 janv. 2007 à 15:13
cs_marmous Messages postés 5 Date d'inscription mardi 22 mars 2005 Statut Membre Dernière intervention 31 décembre 2009 - 31 déc. 2009 à 08:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/38501-ms-sql-server-exportation-de-donnees-vers-microsoft-excel

cs_marmous Messages postés 5 Date d'inscription mardi 22 mars 2005 Statut Membre Dernière intervention 31 décembre 2009
31 déc. 2009 à 08:47
Tu créé un fichier Excel dans lequel sera importé tes données et ensuite tu adaptes ça à tes données.

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

Select @fn = 'D:\LeFichierQueTuAsCree.xls'

--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')
benbassidi25 Messages postés 1 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 30 décembre 2009
30 déc. 2009 à 19:12
j'ai une procedure, et j'aimerai envoyer le resultat de cette table variable que je cree en fichier excel, comment faire?
cs_marmous Messages postés 5 Date d'inscription mardi 22 mars 2005 Statut Membre Dernière intervention 31 décembre 2009
14 avril 2009 à 08:50
Le message d'erreur est très explicite. Tu as ce message car tu utilise SQL server 2005 ou +. En effet dans cette version il faut activer xp_cmdshell comme ecrit dans le message d'erreur. Et comme écrit dans ce message il faut que tu ailles dans configuration de la surface d'exposition et que tu active le paramètre xp_cmdshell.
Ensuite tu as une deuxième erreur, c'est une erreur de syntaxe dans un select.

Ciao
samsemlali Messages postés 1 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 13 avril 2009
13 avril 2009 à 13:11
salut tou le monde
j ai fai le test de cette procedure mai il me donne une erreur la voila :

"Msg 15281, Niveau 16, État 1, Procédure xp_cmdshell, Ligne 1
SQL Server a bloqué l'accès à procédure 'sys.xp_cmdshell' du composant 'xp_cmdshell' car ce composant est désactivé dans le cadre de la configuration de la sécurité du serveur. Un administrateur système peut activer l'utilisation de 'xp_cmdshell' via sp_configure. Pour plus d'informations sur l'activation de 'xp_cmdshell', voir « Configuration de la surface d'exposition » dans la documentation en ligne de SQL Server.
Msg 156, Niveau 15, État 1, Ligne 2
Syntaxe incorrecte vers le mot clé 'from'."

s il vou plai est ce que quelqu'un peut m'aider et merci
cs_marmous Messages postés 5 Date d'inscription mardi 22 mars 2005 Statut Membre Dernière intervention 31 décembre 2009
31 oct. 2008 à 14:18
Bonjour,

Juste une petite précision. Cette méthode ne permet de transférer que 255 caractères par champs.
Ceci est une limitation du driver Microsoft.Jet.OLEDB.4.0, j'en ai fait les frais...

A plus
cs_jimmy69 Messages postés 778 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 27 novembre 2008 1
18 janv. 2007 à 15:28
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
floyo Messages postés 5 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 18 janvier 2007
18 janv. 2007 à 11:35
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)
cs_jimmy69 Messages postés 778 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 27 novembre 2008 1
17 janv. 2007 à 16:30
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
floyo Messages postés 5 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 18 janvier 2007
17 janv. 2007 à 15:13
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 ;)
Rejoignez-nous