[EXCEL] envoie de données dans une feuille Excel depuis DELPHI
drexl
Messages postés56Date d'inscriptionmardi 13 février 2007StatutMembreDernière intervention22 juillet 2014
-
22 juil. 2014 à 10:47
cs_yanb
Messages postés271Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention 7 juillet 2022
-
22 juil. 2014 à 16:30
Bonjour,
Je souhaite remplir un fichier EXCEL, prédéfini.
Pour cela, je fais
for i:=0 to length(CF1)-1 do begin MaFeuille.Cells.Item[Actual_Line+I,2]:=FloatToStr(I); MaFeuille.Cells.Item[Actual_Line+I,3]:=CF1[i]; MaFeuille.Cells.Item[Actual_Line+I,4]:=CF2[i]; MaFeuille.Cells.Item[Actual_Line+I,5]:=CF_MIN; MaFeuille.Cells.Item[Actual_Line+I,6]:=CF_MAX; end;
Cela fonctionne mais c'est lent (remplissage de chaque case, de chaque ligne, l'une après l'autre).
Quand on ouvre un fichier Text formater de manière :
A1;B1;C1
A2;B2;C2
A3;B3;C3
A4;B4;C4
A5;B5;C5
On peut lui dire que c'est un fichier délimité avec comme délimiter ';' et il remplit les cases comme il faut.
Existe il un moyen de faire la même chose depuis delphi avec qq chose comme cela ?
//ici le code qui lui dit que ce que je lui envoi est delimite par ';' for i:=0 to length(CF1)-1 do MaFeuille.Cells.Item[Actual_Line+I,2]:=FloatToStr(I)+';'+CF1[i]+';'+CF2[i]+';'+CF_MIN+';'+CF_MAX;
jordane45
Messages postés38241Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention17 septembre 2024345 22 juil. 2014 à 11:10
Bonjour,
Je ne fais pas de delphi .. mais en .net l'automation Excel est assez lente également ... lorsque l'on doit manipuler cellule par cellule....
La solution est de stocker toutes tes variables dans une variable tableau ( un Array)
Puis... directement de "coller" ton array dans ta feuille Excel ...
Comme ça.. tu ne fais plus qu' UN accès à Excel.
drexl
Messages postés56Date d'inscriptionmardi 13 février 2007StatutMembreDernière intervention22 juillet 2014 22 juil. 2014 à 11:30
merci de ton intérêt,
mais je ne vois pas trop comment faire, j'utilise déjà des tableaux ("CF1[i]").
jordane45
Messages postés38241Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention17 septembre 2024345 22 juil. 2014 à 11:35
Tu créés un Array qui aura la même "forme/structure" que la plage de cellule que tu souhaites modifier/creer
Puis tu "colles" cet array dans ta feuille Excel.
Regarde sur le net... j'ai vu quelques exemples en Delphi pour le faire.
drexl
Messages postés56Date d'inscriptionmardi 13 février 2007StatutMembreDernière intervention22 juillet 2014 22 juil. 2014 à 12:01
j'ai fait ceci
SetLength(MyARRAY,0); for i:=0 to length(CF1)-1 do begin setLength(MyARRAY, length(MyARRAY)+1); MyARRAY[i]:=FloatToStr(I)+';'+FloatToStr(CF1[i])+';'+FloatToStr(CF2[i])+';'+FloatToStr(CF_MIN)+';'+FloatToStr(CF_MAX); end; for i:=0 to length(MyARRAY)-1 do begin MaFeuille.Cells.Item[Actual_Line+I,2]:=MyARRAY[I]; end;
Mais je n'arrive pas a séparer chaque ligne pour remplir les colonnes (et je cherche pourtant sur internet).
jordane45
Messages postés38241Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention17 septembre 2024345 22 juil. 2014 à 12:30
Là tu utilises un tableau à 1 dimension....
Il te faut utiliser un tableau à 2 dimensions... ( lignes / colonnes ).. comme dans une feuille Excel...
Une plage de cellule ( un RANGE) c'est un array à deux dimensions.....
Salut,
dans la question il y a un début de réponse...
Quand on ouvre un fichier texte formater...c'est un fichier délimité avec ... ';'.
Ben voilà fait un fichier texte ou CSV ;) peut-être en passant par un TStringList pour faire facilement un SaveToFile et Delimiter etc... et ensuite tu l'ouvres avec excel et tu l'enregistres avec SaveAs au format excel...
@+
22 juil. 2014 à 11:30
mais je ne vois pas trop comment faire, j'utilise déjà des tableaux ("CF1[i]").
22 juil. 2014 à 11:35
Puis tu "colles" cet array dans ta feuille Excel.
Regarde sur le net... j'ai vu quelques exemples en Delphi pour le faire.