tout le monde, j'aimerais savoir comment envoyer les données contenues dans mon ADOQuery vers une feuille de calcul Excel ou une page Word (dans un tableau)?
tout le monde, j'aimerais savoir comment envoyer les données contenues dans mon ADOQuery vers une feuille de calcul Excel ou une page Word (dans un tableau)?
Salut,
il y a pas mal d'exemple d'export sur le forum vers excel et également l'utilisation de ADO.
Regarde cela http://www.developpez.net/forums/d67...id-vers-excel/ sa pourra surement te donner des pistes...
![]()
Merci à vous, à vrai dire je n'ai aucune notionsur les composants à utiliser alors si vous pouvez me donner la marche à suivre je crois que ça m'aidera énormément
Concrètement voici mon problème:
Je récupère les résultats d'une requête dans mon ADOQuery pour les afficher dans un DBGrid via un DataSource et c'est le contenu de mon DBGrid (ADOQuery en quelque sorte) que je veux envoyer dans un fichier Excel.
Salut;
D'abord faut voir coté FAQ y a des exemples "prêt à l'emploi" ensuite le DBGrid affiche les données de ton Query donc faut penser requête et pas affichage.
Je n'ai pas de problème avec la génération des résultats. J'arrive à remplir correctement mon DBGrid. Mon problème est comment envoyer le tout vers un fichier Excel.
salut
regardes ici peut etre que ça t'aidera
http://www.developpez.net/forums/d80...db-vers-excel/
ou
http://www.developpez.net/forums/d71...excel-delphi7/
dans ces exemples c'est pour envoyer des donnees du BDE vers excell
pour ton cas a la place des tables tu vas utiliser ton DBGRID,
tu lis les cases de ton DBGRID une a une et tu les copies dans le fichier excell.
bonne chance
Merci beaucoup à vous. Mais le problème qui se pose est qu'il ne copie que 13 enregistrements sur une centaine:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 var vMSExcel, vXLWorkbooks, vXLWorkbook, vWorksheet : variant; i,j:integer; begin // demarrer excel vMSExcel := CreateOleObject('Excel.Application'); vMSExcel.Visible := true; //creer un nouveau fichier xls vXLWorkbooks := vMSExcel.Workbooks; vXLWorkbook := vXLWorkbooks.Add; //acceder a une feuil vWorksheet := vXLWorkbook.WorkSheets['feuil1']; //ecrire les titres des champs for i:=0 to ibtable1.FieldCount-1 do vworksheet.cells.item[1,i+1].value:=ibtable1.Fields[i].FieldName; //ecrire les données ibtable1.First; for j := 1 to ibtable1.RecordCount do begin for i:=0 to ibtable1.FieldCount-1 do begin vworksheet.cells.item[j+1,i+1].value:=ibtable1.Fields[i].AsString; end; ibtable1.Next; end; end;
salut
13 enregistrements c'est déja un début la méthode est juste, moi ça a toujours marchée
il faut voir ce que contient ta ibtable1 lors de l'execution de ce code
essaies de lier ibtable1 a un DBGRID, pour voir les donnes quelle contient
car le code est juste
bonne chance
J'ai envoyé le contenu de ma table dans un DBGrid et il a affiché une centaine d'enregistrements. Mais l'export ne contient toujours pas tous les enregistrements.
Néanmoins je vais essayer d'exporter le contenu du DBGrid au lieu de le faire directement avec la table (mais ça m'étonnerais vraiment d'avoir des résultats différents) et je vous tiendrais au courant.
essaies de faire ça pour voir si l'erreur vien de la boucle ou de ibtable1
bonne chance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 //ecrire les données ibtable1.First; for j := 1 to ibtable1.RecordCount do begin for i:=0 to ibtable1.FieldCount-1 do begin vworksheet.cells.item[j+1,i+1].value:=inttostr(j); end; ibtable1.Next; end; end;
J'ai finalement trouvé
J'avais tout simplement posé le curseur à la 13 ème ligne
Lorsque je l'envoi à la dernière ligne, tous les enregistrements sont exportés correctement.
Grandà vous
![]()
Partager