--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és1Date d'inscriptionmercredi 30 décembre 2009StatutMembreDernière intervention30 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és5Date d'inscriptionmardi 22 mars 2005StatutMembreDernière intervention31 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és1Date d'inscriptionlundi 2 février 2009StatutMembreDernière intervention13 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és5Date d'inscriptionmardi 22 mars 2005StatutMembreDernière intervention31 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és778Date d'inscriptiondimanche 22 décembre 2002StatutMembreDernière intervention27 novembre 20081 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és5Date d'inscriptionmercredi 2 novembre 2005StatutMembreDernière intervention18 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és778Date d'inscriptiondimanche 22 décembre 2002StatutMembreDernière intervention27 novembre 20081 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és5Date d'inscriptionmercredi 2 novembre 2005StatutMembreDernière intervention18 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.
31 déc. 2009 à 08:47
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')
30 déc. 2009 à 19:12
14 avril 2009 à 08:50
Ensuite tu as une deuxième erreur, c'est une erreur de syntaxe dans un select.
Ciao
13 avril 2009 à 13:11
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
31 oct. 2008 à 14:18
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
18 janv. 2007 à 15:28
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
18 janv. 2007 à 11:35
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)
17 janv. 2007 à 16:30
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
17 janv. 2007 à 15:13
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 ;)