Accueil > Forum > > > > exporter vers excel
exporter vers excel
mercredi 15 juin 2005 à 12:34:02 |
exporter vers excel

brunaux
|
bonjour à tous
voila ,j'ai 3 tables ,exemple : t18,s18,r18 .dans ces 3 bases diverses variables tel que :num_coupon,desc_coupon,mont_coupon,observations etc .toutes 3 ayant un champ commun : num_unique est-il possible d'apres ces 3 tables de creer un fichier excel ,exemple f18 qui contiendrais 3 onglets,chacun portant le nom des 3 tables précedentes ? au final je voudrais a partir des 3 bases (t18,s18,r18) avoir un fichier excel f18 qui aura 3 onglets (t18,s18,r18)
Est-ce quelqu'un à une re
|
|
mercredi 15 juin 2005 à 20:16:49 |
Re : exporter vers excel

Mike Gagnon
|
Quelque chose du genre. CLOSE DATABASES all oExcel = CREATEOBJECT('Excel.application') oWorkbook = oExcel.Workbooks. ADD USE t18 SHARED AGAIN IN 0 SELECT T18 copydata(1,"T18") USE r18 SHARED AGAIN IN 0 SELECT R18 copydata(2,"R18") USE s18 SHARED AGAIN IN 0 SELECT S18 copydata(3,"S18") PROCEDURE copydata(sheetnumero,lcSheetName) WITH oWorkbook .Sheets(sheetnumero). SELECT WITH .activesheet . NAME = lcSheetname nfieldno= AFIELDS(arrfielda,lcAlias) FOR N=1 TO nfieldno .Cells(1,N). VALUE=arrfielda(N,1) ENDFOR nrow=2 SELECT &lcAlias SCAN FOR N=1 TO nfieldno cfield=lcAlias+'.'+arrfielda(N,1) .Cells(nrow,N). VALUE=(&cfield) ENDFOR .Cells(nrow,1).SELECT nrow=nrow+1 ENDSCAN nValue = 65 FOR N=1 TO nfieldno cColumn = CHR(nValue) . COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).EntireColumn.AutoFit .COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).SELECT .COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).HorizontalAlignment = xlCenter . COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).VerticalAlignment = xlBottom . COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).WrapText = .F. . COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).ORIENTATION = 0 . COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).AddIndent = .F. . COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).IndentLevel = 0 . COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).ShrinkToFit = .F. . COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).ReadingOrder = xlContext . COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).MergeCells = .F. ENDFOR .Cells.Select ENDWITH ENDWITH oExcel. VISIBLE =.T.Mike Gagnon
|
|
jeudi 16 juin 2005 à 07:55:17 |
Re : exporter vers excel

brunaux
|
Merci Mike pour la réponse
mais désolé cela ne marche pas j'ai oublier de préciser quelques petites choses :j'utilise VP6 (cela a peut-etre son importance ?) et suis utilisateur occasionnel donc il y a des choses de ton code que je ne comprends pas trop !
et aussi ,outre le fait de vouloir mettre les 3 tables t18,s18 et r18 dans un fichier excel f18 ayant 3 onglets portant le nom des 3 bases,je veux creer autant de fichiers excel qu'il y a de num_unique different dans les bases: je m'explique: dans t18 je vais par exemple avoir les 3 premiers enregistrement ayant 1030 en num_unique (donc egalement en s18 1030 sur x enregis. et en r18 1030 sur x enregis.),ensuite 5 enregis. ayant 1031 (idem au-dessus pour s18 et r18), puis mettons 10 enregis. ayant 1032 (idem au-dessus pour s18 et r18), etc .... au final je vais donc avoir un fichier excel f1030(avec les onglets t18 de 3 lignes,s18 sur x lignes,r18 sur x lignes),un autre f1031(idem au-dessus),un autre f1032, etc ....
donc en fait quand je lance le programme,cela bloque tout de suite sur :
nfieldno=AFIELDS(arrfielda,lcAlias)
message "variable 'lcalias' introuvable" ?
j'ai donc besoin de nouveau d'aide !!! merci d'avance
|
|
jeudi 16 juin 2005 à 11:08:30 |
Re : exporter vers excel

Mike Gagnon
|
Les choses se compliquent. Je m'excuse je connaisait pas ton niveau de comprehension de FoxPro. Mais pour ce qui est de la première erreur que tu obtient, on peut la corriger comme ceci. oExcel = CREATEOBJECT('Excel.application') oWorkbook = oExcel.Workbooks.ADD PRIVATE lcAlias USE t18 SHARED AGAIN IN 0 SELECT T18 lcAlias = ALIAS() copydata(1,"T18") USE r18 SHARED AGAIN IN 0 SELECT R18 lcAlias = ALIAS() copydata(2,"R18") USE s18 SHARED AGAIN IN 0 SELECT S18 lcAlias = ALIAS() copydata(3,"S18") PROCEDURE copydata(sheetnumero,lcSheetName) WITH oWorkbook .Sheets(sheetnumero).SELECT WITH .activesheet .NAME = lcSheetname nfieldno=AFIELDS(arrfielda,lcAlias) FOR N=1 TO nfieldno .Cells(1,N).VALUE=arrfielda(N,1) ENDFOR nrow=2 SELECT &lcAlias SCAN FOR N=1 TO nfieldno cfield=lcAlias+'.'+arrfielda(N,1) .Cells(nrow,N).VALUE=(&cfield) ENDFOR .Cells(nrow,1).SELECT nrow=nrow+1 ENDSCAN nValue = 65 FOR N=1 TO nfieldno cColumn = CHR(nValue) .COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).EntireColumn.AutoFit .COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).SELECT .COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).HorizontalAlignment = xlCenter .COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).VerticalAlignment = xlBottom .COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).WrapText = .F. .COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).ORIENTATION = 0 .COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).AddIndent = .F. .COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).IndentLevel = 0 .COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).ShrinkToFit = .F. .COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).ReadingOrder = xlContext .COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).MergeCells = .F. ENDFOR .Cells.Select ENDWITH
Mike Gagnon
|
|
jeudi 16 juin 2005 à 12:02:24 |
Re : exporter vers excel

brunaux
|
merci mike
petit probleme dans le programme : message d'erreur : variable XLCENTER introuvable variable XLBOTTOM introuvable variable XLCONTEXT introuvable
en appuyant tout le temps sur 'ignorer' au bout d'un moment on sors de la boucle et on a bien un fichier excel ouvert avec les 3 onglets(t18,r18,s18) avec les donnes donc a priori cela marche peut-etre faut-il supprimer les lignes pour ces 3 variables?
mais mon autre souci est que je pensais que l'on pouvait donner tout de suite dans le programme un nom de fichier excel (exemple:"premier_fichier") qui s'enregistre dans le repertoire ou on a les données en fait ce que voudrais reellement c'est en lancant le programme avoir au final mettons 4 fichier excel : un fichier 1030.xls, puis 1031.xls,puis 1032.xls,puis 1033.xls dans le 1030.xls j'aurais mettons 3 lignes en onglet t18,puisque dans t18 j'ai 3 lignes avec 1030 en num_unique, 3 lignes en onglet r18 puisque 3 enregis.dans r18 avec 1030 en num_unique,pareil pour l'onglet s18
puis dans le 1031.xls mettons 5 lignes (5 enregis. dans t18 avec 1031 en num_unique etc.... comme au-dessus)
puis dans le 1032.xls mettons 10 lignes (idem comme au dessus)
etc....
est-ce-que tout cela est vraiment possible ??? j'espere ne pas etre trop brouillon dans mes explications !!
merci d'avance
|
|
jeudi 16 juin 2005 à 12:20:31 |
Re : exporter vers excel

Mike Gagnon
|
Je sais ou tu veux arriver, mais je travaille la solution avec toi, en esperant que tu va pouvoir prendre le controle de la solution éventuellement. Mais pour ce qui est des constantes, j'ai oublié des définir au debut, ajoute ceci au début de la routine. # DEFINE xlCenter -4108 # DEFINE xlBottom -4107 # DEFINE xlContext -5002 Je reviens avec le restant de la solution bientot (je dois quitter pour quelques instants). Mais techniquement la solution est faisable. Il s'agit d'utliser ddes curseurs SQL. Un qui contient les valeurs distinctes de ton num_unique, et en faisant un loop, on peut grouper le restant des données par numero unique, et une fois le curseur crée, on l'envoye à un nouvelle feuille excel. Mike Gagnon
|
|
jeudi 16 juin 2005 à 13:58:47 |
Re : exporter vers excel

brunaux
|
merci mike, cela marche avec les nouvelle lignes de codes pour les constantes (d'ailleurs je ne sais pas a quoi cela correspond !!!). pour le reste je suis plutot perdu , je ne sais meme pas comment dans VFP on peut donner un nom de fichier excel lorque ce dernier est ouvert et créer en programmation ni comment on le ferme et on l'enregistre dans un repertoire precis j'avais vaguement penser pour le repertoire de faire un truc comme ca: repertoire_travail = 'd:\etudes\comptages\' CD (repertoire_travail) mettre deja ces 2 lignes au debut du programme
je me disais aussi peut-etre decomposer en autant fichiers dbf que l'on a de num_unique different dans chacun des 3 bases exemple pour t18 copier ds un fichier la 1ere valeur de num_unique ,ex:1030 (donc =t18_1030.dbf) avec copy to t18_1030.dbf for num_unique=1030 balayer le fichier puis des que la valeur suivante change recommencer copy to t18_1031.dbf for num_unique=1031 etc... etc ... pour avoir au final exemple t18_1030.dbf à t18_1080.dbf (j'aurais aussi la meme chose pour r18 et s18 evidemment) et puis lancer ton programme en changeant manuellement les intitulés d'alias() ,plus enregistrer manuellement aussi le fichier excel ouvert (t18_1030.xls) ,fermer excel puis relancer le prg avec un nouvel intitule d'alias() ,etc etc jusqu'a t18_1080.xls , mais bon cela fait beaucoup,beaucoup de manipulations. je compte donc beaucoup plus sur ton aide pour la suite que moi je ne pourrais d'aider en prenant le controle de la solution pour ce programme j'attends donc tjrs encore ton aide ! merci
|
|
jeudi 16 juin 2005 à 14:37:29 |
Re : exporter vers excel

Mike Gagnon
|
>>>merci mike, cela marche avec les nouvelle lignes de codes pour les constantes (d'ailleurs je ne sais pas a quoi cela correspond !!!).
ILes trois valeurs en question correspondent à des contantes qu'Excel s'attend pour formatter la colone (dans l'exemple ci-haut). Tu aurrai aussi pu mettre les valeurs correspondant à la place, mais cela n'est pas un bon style de programmation. Par exemple on pourrait changer le ligne qui suit avac la valeur.
.COLUMNS(TRANSFORM(cColumn)+':'+TRANSFORM(cColumn)).HorizontalAlignment = -4108
Mais pour revenir au probleme, comme j'ai expliqué, si on prend la table T8 qui contient je crois 3 valeurs différentes. Et on utilise ce qui suit.
SELECT num_unique from T8 group by num_unique into cursor premier
La on a un curseur qui contient juste le champs num_unique, et seulement un entrée pour chaque valeurs.
Ensuite tu reprend la table T8 pour récupérer les autres champs, basé sur la valeur unique dans le curseur premier. Donc SELECT num_unique from T8 group by num_unique into cursor premier SELECT premier SCAN lnNum = premier.num_unique SELECT * from T8 where t8.num_unique - lnNUM into moncurseur *** la tu envoye les données du curseur moncurseur vers un nouvelle feuille Excel avec la fonction postée plus haut
ENDSCAN
Donc pour reprendre le tout (Avec une table seulement - il faut refraire avec les autres)
#DEFINE xlCenter -4108 #DEFINE xlBottom -4107 #DEFINE xlContext -5002 oExcel = Createobject('Excel.application') oWorkbook = oExcel.Workbooks.Add Private lcAlias Select num_unique From T8 Group By num_unique Into Cursor premier Select premier Scan lnNum = premier.num_unique Select * From T8 Where T8.num_unique - lnNum Into moncurseur Select moncurseur lcAlias= Alias() copydata(1,Transform(lnNum)) Endscan Procedure copydata(sheetnumero,lcSheetName) With oWorkbook .Sheets(sheetnumero).Select With .activesheet .Name = lcSheetName nfieldno=Afields(arrfielda,lcAlias) For N=1 To nfieldno .Cells(1,N).Value=arrfielda(N,1) Endfor nrow=2 Select &lcAlias Scan For N=1 To nfieldno cfield=lcAlias+'.'+arrfielda(N,1) .Cells(nrow,N).Value=(&cfield) Endfor .Cells(nrow,1).Select nrow=nrow+1 Endscan nValue = 65 For N=1 To nfieldno cColumn = Chr(nValue) .Columns(Transform(cColumn)+':'+Transform(cColumn)).EntireColumn.AutoFit .Columns(Transform(cColumn)+':'+Transform(cColumn)).Select .Columns(Transform(cColumn)+':'+Transform(cColumn)).HorizontalAlignment = xlCenter .Columns(Transform(cColumn)+':'+Transform(cColumn)).VerticalAlignment = xlBottom .Columns(Transform(cColumn)+':'+Transform(cColumn)).WrapText = .F. .Columns(Transform(cColumn)+':'+Transform(cColumn)).Orientation = 0 .Columns(Transform(cColumn)+':'+Transform(cColumn)).AddIndent = .F. .Columns(Transform(cColumn)+':'+Transform(cColumn)).IndentLevel = 0 .Columns(Transform(cColumn)+':'+Transform(cColumn)).ShrinkToFit = .F. .Columns(Transform(cColumn)+':'+Transform(cColumn)).ReadingOrder = xlContext .Columns(Transform(cColumn)+':'+Transform(cColumn)).MergeCells = .F. Endfor .Cells.Select Endwith Endproc
Mike Gagnon
|
|
lundi 20 juin 2005 à 14:41:07 |
Re : exporter vers excel

brunaux
|
Merci Mike pour toute l'aide apportée, mais malheureusement j'toujours l'erreur une fois les données copies vers excel (avec l'aide de ton code), une fois qu'on enregistre le fichier excel ouvert quand on revient dans le formulaire ,si l'on veut de nouveau saisir des données dans les grilles qui appartiennent aux 3 tables,ca plante toujours toujours avec des messages style "les données sont déjà ouvertes dans d'autres zone de travail !" j'ai donc laissé tomber et je fais un truc de débutant ! (on fait comme on peut !) je copie chaque base (ex:t18_1030) avec un copy to monfichier(t18_1030) type xl5 ,la meme chose avec les 2 autres bases ,une fois les 3 copy faits ,avec un zap je peux de nouveau resaisir des données dans mes grilles du formulaires. Et apres pour excel quelqu'un fera une macro pour mettre les 3 fichiers excel (t18_1030, r18_1030 et s18_1030) ensemble avec les 3 onglets avec le nom des bases. c'est tiré par les chevaux mais bon ... une derniere chose: les ligne des codes style : .Sheets(sheetnumero).Select .Columns(Transform(cColumn)+':'+Transform(cColumn)).IndentLevel = 0
c'est du visual foxpro ou du langage excel que l'on peut ecrire dans VFP ?
encore merci pour tout l'aide
|
|
lundi 20 juin 2005 à 14:49:46 |
Re : exporter vers excel

Mike Gagnon
|
Réponse acceptée !
>>.Sheets(sheetnumero).Select >>>.Columns(Transform(cColumn)+':'+Transform(cColumn)).IndentLevel = 0
c'est du visual foxpro ou du langage excel que l'on peut ecrire dans VFP ?
C'est du language VFP qui imite ce qu'Excel s'attend à recevoir.
Mike Gagnon
|
|
Cette discussion est classée dans : excel, tables, t18, s18, r18
Répondre à ce message
Sujets en rapport avec ce message
Consultation sur un serveur ftp de tables ou fichiers [ par shak212 ]
Bonjour à tous,Voila mon problème,Je voudrais consulter un serveur ftp qui contient des tables access. Je n'ai pas de problème pour me connecter et po
Export d'une requête en xls [ par crampe666 ]
Salut à tous,Je cherche (et même j'arrive) à exporter les résultats d'une requête dans un fichier excel.Voici mon bout de code : select mon_champ fr
copier ver excel [ par brunaux ]
Bonjour à tousComment faire lorsque l'on à un fichier de 30 0000 (ou plus) enregistrements et que l'on veut le copier en excel et avoir l'integralite
export excel [ par gedizan ]
Bonjour,Export ou copy to, en type XLS, me génère une première ligne contenant le nom des champs de la table exportée dans le classeur Excel.Comment p
formulaire-->Excel [ par Domatreal ]
Salut J'ai creer un formulaire et j'aimerais savoir si on pouvait exporter le resultat (tel qu'il apparait) dans un fichier excel. Merci bien Domatrea
Fichier Excel [ par Domatreal ]
Salut Est-il possible d'ouvrir un fichier excel (qui existe deja) avec foxpro, et de le modifier toujours dans foxpro?Merci d'avanceDomatreal
pb d'exe ! [ par spoutnic_37 ]
aloha , j'ai un probleme avec mon executable. En fait j'ai un formulaire qui possede les bonnes tables dans l'environnement de donnée, et dans c
vfp9 les vues distantes [ par samirba ]
J’ai rencontré un problème concernant les vues distantes (SQL SERVER) J’ai deux tables : - la 1ère de nom bon_entree qui contient les champs suivants
limite de left, cursor et export sous excel [ par ducker88 ]
Bonjour a tous,Est ce que les fonctions left, cursor et export sont limité en caracteres. Il faut que je fasse un export d'une table qui contient un m
Ouvrir fichier word, excel pdf ou autre [ par ducker88 ]
Bonjour à tous, Voila je voudrais pouvoir n'importe quel fichier quel qu'en soi la syntaxe dans le logiciel par defaut, exemple je voudrais ouvrir un
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
974 Application Server (12.2.4.0)974 APPLICATION SERVER (12.2.4.0)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP mySongBook Player (1.0.0)MYSONGBOOK PLAYER (1.0.0)mySongBook Player est un logiciel gratuit permettant l'accès à une archive de tablatures/partitio... Cliquez pour télécharger mySongBook Player
|