cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 2021
-
27 mars 2013 à 17:34
cs_philnext
Messages postés9Date d'inscriptiondimanche 11 juillet 2004StatutMembreDernière intervention29 novembre 2010
-
1 avril 2013 à 20:58
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_barbichette
Messages postés220Date d'inscriptionlundi 30 octobre 2000StatutMembreDernière intervention15 juillet 2013 1 avril 2013 à 10:54
D'accord aussi avec Mauricio et Cantador (y compris que la généralisation à n'importe quelle table de format quelconque).
De plus, le fichier CSV est compatible avec d'autres tableurs et d'autres appli.
Sinon, il y a maintenant le format XLSX qui est un simple ZIP avec un fichier xml contenant le tableau.
Maintenant, le but ici étant d'exporter ver excel, on suppose que l'utilisateur a excel...
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 28 mars 2013 à 23:04
merci Mauricio,
OLE, c'est bien sans plus..
il y a la dépendance notamment en cas de changement de version
et aussi et la vitesse d'exécution qui n'est pas terrible.
Alors qu'll existe beaucoup d'autres solutions bien meilleures..
le .cvs en fait partie puisqu'il est reconnu aussitôt par EXCEL et
s'ouvre directement en mode tableur.
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 28 mars 2013 à 10:25
Très bonnes remarques de Cantador!
Je déplore l' utilisation d' Excel (ExcelApp := CreateOleObject('Excel.Application')) qui rend notre application dépendente alors qu' il est possible de créer un fichier *.csv.
a+
yvessimon
Messages postés637Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 9 janvier 2017 28 mars 2013 à 09:54
Bonjour,
Avec ADOQuery2 il est possible de transferer toute la table sélectionnée
dans excel (ou l'invers), avec une sipmle commande SQL.
sCopy := 'SELECT * INTO ["Excel 8.0;Database=' + Source_EXCEL.Text + '"].['+Tab_destination+'] FROM '+ Tab_source;
// LA TABLE EXCEL EXISTE ?
i := combobox1.Items.IndexOf(Tab_destination ) ;
if i > 0 then
BEGIN
showmessage(' la table EXCEL : ' +Tab_destination+ #10' existe ');
exit;
END;
// COPIE ACCESS VERS EXCEL POSSIBLE
caption := sCopy;
TRY
BD_.ADOQuery2.SQL.Text:= sCopy; // liée avec ACCESS
BD_.ADOQuery2.ExecSQL;
EXCEPT
// message ..;
END;
//----------
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 27 mars 2013 à 23:32
if ADOQuery.RecordCount = 0 then
à remplacer par :
if (ADOQuery.BOF) and (ADOQuery.EOF)then
si les deux pointeurs sont vrais alors la table est vide, beaucoup plus rapide que recordcount qui parcourt toute la table..
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 27 mars 2013 à 17:34
question posée de manière récurrente sur le forum..
Ce code répond je pense à tes besoins,
mais il ne traite pas la question de manière générale..
Il aurait été intéressant de l'aborder quel que soit le nombre de champs existants dans la table et aussi quels que soient leurs structures.
On peut aussi prendre une hypothèse de travail plus large encore en choisissant d'exporter un dataset et là quelque soit la base !
Il faudrait aussi lui ajouter une option afin de choisir un format de sortie et prévoir un traitement d'erreurs toujours possibles.
1 avril 2013 à 20:58
http://sourceforge.net/p/axbase/code/ci/105399ff6d3a810f53f66ee55350fa35740377ee/tree/source/TXLSExport.pas
1 avril 2013 à 12:47
https://sourceforge.net/p/axbase/code/ci/66835d35613b3f8f5d448864655b387e277f1da5/tree/source/TUtilExport.pas
1 avril 2013 à 10:54
De plus, le fichier CSV est compatible avec d'autres tableurs et d'autres appli.
Sinon, il y a maintenant le format XLSX qui est un simple ZIP avec un fichier xml contenant le tableau.
Maintenant, le but ici étant d'exporter ver excel, on suppose que l'utilisateur a excel...
28 mars 2013 à 23:04
OLE, c'est bien sans plus..
il y a la dépendance notamment en cas de changement de version
et aussi et la vitesse d'exécution qui n'est pas terrible.
Alors qu'll existe beaucoup d'autres solutions bien meilleures..
le .cvs en fait partie puisqu'il est reconnu aussitôt par EXCEL et
s'ouvre directement en mode tableur.
28 mars 2013 à 10:25
Je déplore l' utilisation d' Excel (ExcelApp := CreateOleObject('Excel.Application')) qui rend notre application dépendente alors qu' il est possible de créer un fichier *.csv.
a+
28 mars 2013 à 09:54
Avec ADOQuery2 il est possible de transferer toute la table sélectionnée
dans excel (ou l'invers), avec une sipmle commande SQL.
La table destination doit être inexistante.
Salutations
//--------- extrait de code
Tab_source := edit13.Text ;// table ACCESS existante
Tab_destination:= edit6.Text; // table EXCEL nouvelle
sCopy := 'SELECT * INTO ["Excel 8.0;Database=' + Source_EXCEL.Text + '"].['+Tab_destination+'] FROM '+ Tab_source;
// LA TABLE EXCEL EXISTE ?
i := combobox1.Items.IndexOf(Tab_destination ) ;
if i > 0 then
BEGIN
showmessage(' la table EXCEL : ' +Tab_destination+ #10' existe ');
exit;
END;
// COPIE ACCESS VERS EXCEL POSSIBLE
caption := sCopy;
TRY
BD_.ADOQuery2.SQL.Text:= sCopy; // liée avec ACCESS
BD_.ADOQuery2.ExecSQL;
EXCEPT
// message ..;
END;
//----------
27 mars 2013 à 23:32
à remplacer par :
if (ADOQuery.BOF) and (ADOQuery.EOF)then
si les deux pointeurs sont vrais alors la table est vide, beaucoup plus rapide que recordcount qui parcourt toute la table..
27 mars 2013 à 17:34
Ce code répond je pense à tes besoins,
mais il ne traite pas la question de manière générale..
Il aurait été intéressant de l'aborder quel que soit le nombre de champs existants dans la table et aussi quels que soient leurs structures.
On peut aussi prendre une hypothèse de travail plus large encore en choisissant d'exporter un dataset et là quelque soit la base !
Il faudrait aussi lui ajouter une option afin de choisir un format de sortie et prévoir un traitement d'erreurs toujours possibles.