|
[WB17] Faire un export d'une requete vers Excel sans table |
Débuté par Laurent, 16 fév. 2012 22:00 - 6 réponses |
| |
| | | |
|
| |
Posté le 16 février 2012 - 22:00 |
Bonjour, je cherche un moyen d'exporter le résultat d'une requete directement en Excel sans creer une table avant. Mon souci est que j'ai une centaine de champ et la page devient trés lente donc je voudrai créer un bouton "Exporter vers excel" merci |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 48 messages |
|
Posté le 17 février 2012 - 13:44 |
Bonjour,
Aucune fonction WebDev ne permet cela directement. Toutefois tu peut coder ta propre solution.
Voici un exemple vite-fait de se que tu peut faire.
Procedure RequêteVersExcel(sdMaRequete est une Source de Données,sCheminFichierExcel est une chaîne)
xlsExport est un xlsDocument xlsAjouteFeuille(xlsExport,"Feuille 1") xlsFeuilleEnCours(xlsExport,1)
sRubriques est une chaîne = HListeRubrique(sdMaRequete) POUR TOUTE CHAINE sRub,nPos,nColonne DE sRubriques SEPAREE PAR RC
xlsExport[nColonne,1] = sRub
FIN
nLigne est un entier = 2 POUR TOUTE sdMaRequete POUR TOUTE CHAINE sRub,nPos,nColonne DE sRubriques SEPAREE PAR RC
xlsExport[nColonne,nLigne] = {sdMaRequete..Nom+"."+sRub,indChamp}
FIN
nLigne ++
FIN
xlsSauve(xlsExport,sCheminFichierExcel) |
| |
| |
| | | |
|
| | |
| |
Posté le 20 février 2012 - 11:59 |
Merci beaucoup pour ta réponse, je teste ce code cet aprem. |
| |
| |
| | | |
|
| | |
| |
Posté le 06 mars 2013 - 09:22 |
ça marche mieux avec xlsExport[nLigne,nColonne] = {marequete..Nom+"."+sRub} c'est juste les lignes et colonnes qui étaient inversées. sinon, super, merci pour le code |
| |
| |
| | | |
|
| | |
| |
Posté le 08 février 2019 - 16:01 |
Bonjour LAURENT, j'ai testé ce même code, mais ça ne fonctionne pas. Comment tu as fait? Y'a des paramètres?? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 48 messages Popularité : +3 (3 votes) |
|
Posté le 08 février 2019 - 22:21 |
J'aimerai récupérer la ligne de titre des colonnes, même si je mets mligne=1 je n'ai rien.
Merci |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 37 messages Popularité : +1 (1 vote) |
|
Posté le 26 février 2019 - 18:37 |
Bonjour KONAN, bonjour à tous,
Le code initial de Laurent fonctionne parfaitement bien a deux petits bugs près comme signalé par Samuel. Je les remercie tous les deux (pas les bugs, mais Laurent et Samuel, bien-sûr ). Au passage, @Samuel : préciser le type d'indirection est plus rapide et plus propre, sauf que dans l'exemple de Laurent, il faut remplacer 'indChamp' par 'indRubrique' et bien entendu inverser les lignes et les colonnes, comme tu l'as dit.
Voici un exemple (un peu retouché, c'est vrai, mais essentiellement pour coller à ma charte de programmation et à ma propre façon de coder). Le fil conducteur du code de Laurent est cependant respecté.
Sur un fichier des plus de 200'000 lignes de ventes, voici ce que ça donne et j'atteste que ça marche nickel.
lchnCode est une chaîne lsrcRequête est une Source dede Données lchnExport est une chaîne lavcExport est un xlsDocument ltblColonnes est un tableau de chaînes lchnColonne est une chaîne lentLigne est un entier lentColonne est un entier
Sablier(Vrai) lchnCode = [ SELECT DISTINCT Ventes.Période AS Période, LEFT(Ventes.Période,4) AS Année, RIGHT(Ventes.Période,2) AS Mois, Ventes.Famille AS Famille, Ventes.TypeArticle AS Type, Ventes.Titre AS Désignation, SUM(Ventes.MontantNetHT) AS CA, SUM(Ventes.QuantitéNette) AS Quantité, SUM(Ventes.QuantitéNette * Ventes.Poids) AS Volume FROM Ventes GROUP BY Ventes.Période, LEFT(Ventes.Période,4), RIGHT(Ventes.Période,2), Ventes.Famille, Ventes.TypeArticle, Ventes.Titre ORDER BY Année ASC, Mois ASC, Famille ASC, Type ASC, Désignation ASC ] SI PAS HExécuteRequêteSQL(lsrcRequête,hRequêteDéfaut,lchnCode) ALORS Erreur( [ ERREUR : La tentative d'exécution de la requête SQL a échoué. ]) FinProgramme() FIN
lchnExport = ComplèteRep(fRepExe()) + "Export.xlsx" xlsAjouteFeuille(lavcExport,"Ventes",1) xlsFeuilleEnCours(lavcExport,1)
ChaîneVersTableau(HListeRubrique(lsrcRequête),ltblColonnes) lentLigne = 1 POUR CHAQUE lchnColonne de ltblColonnes lentColonne++ lavcExport[lentLigne,lentColonne] = ltblColonnes[lentColonne] FIN
POUR CHAQUE lsrcRequête lentLigne++ lentColonne = 0 POUR CHAQUE lchnColonne de ltblColonnes lentColonne++ lavcExport[lentLigne,lentColonne] = {lsrcRequête..Nom + "." + lchnColonne,indRubrique} FIN FIN
xlsSauve(lavcExport,lchnExport) Sablier(Faux)
LanceAppliAssociée(lchnExport)
Cordialement, J@ck |
| |
| |
| | | |
|
| | | | |
| | |
|