PB à toute heure et à tout moment. (à parcourir avec modération)

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 07-02-2012 10:44:47

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

[RESOLU] Sauvegarde au format excel8 très très lent

Bonjour,

En phase de migration vers une version 12.1, j'essaye de remettre en place la sauvegarde des fichiers excel au format excel8! .

Malheureusement, le problème déjà présent 10.5 existe toujours, la réponse de sybase de l'époque avait été :

"La différence de temps de traitement vient de l'utilisation d'une structure OLE au lieu d'une I/O directe."
"Changer l’implémentation est extrêmement complexe et risquerait de provoquer des regressions en cascade. Aussi, il a été décidée ne pas modifier cette fonctionnalité.
"Je vous suggère donc de poursuivre l'utilisation d'Excel5!."

Après avoir rappelé Sybase, et fait quelques tests, le problème est toujours présent en 12.1, et facilement reproductible sur les gros fichiers.

Avez-vous déjà constater ces problèmes de lenteur et résolu et/ou contourner ce problème ?

J'essaye donc de trouver une solution de contournement, notamment en utilisant l'OLE d'EXcel via PB.

Mes données étant sauvegardées dans une datawindow ou une datastore, j'essaye de dire à l'ole de me sauvegarder l'ensemble de mes données dans la feuille excel
Mais en sauvegardant l'ensemble de la datastore en une seule fois, sans passer ligne à ligne.

J'ai essayé, entre autre, ce code qui ne fonctionne pas, mais je ne trouve pas la bonne syntaxe.

Code: pb

invo_extract_xls.Io_Excel.Application.workbooks(1).ActiveSheet.Cells.Value = lds_temporaire.object.data


Auriez-vous la bonne syntaxe, me permettant de mettre l'ensemble des données d'une datastore dans une feuille excel ?

J'ai également essayé la fonction clipboad, mais cette méthode ne respecte pas les formats numériques, et je n'ai pas non plus les entetes de colonne.

Merci d'avance pour votre retour,

Hors ligne

 

#2 07-02-2012 11:01:20

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: [RESOLU] Sauvegarde au format excel8 très très lent

çà par exemple http://pbadonf.fr/forum/viewtopic.php?pid=29605#p29605
juste pour dire, hein...


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#3 07-02-2012 11:05:45

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [RESOLU] Sauvegarde au format excel8 très très lent

xlat a écrit:

çà par exemple http://pbadonf.fr/forum/viewtopic.php?pid=29605#p29605
juste pour dire, hein...

Bonjour,


Non, cela ne correspond pas à ma demande, puisque cela fait une copie ligne à ligne (et méthode déjà utilisée mais relativement lente) , et que je voudrais faire une copie de l'ensemble de la ds en une seule fois dans la feuille excel.

Merci d'avance,

Hors ligne

 

#4 07-02-2012 12:09:07

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Sauvegarde au format excel8 très très lent

ça marche pas le saveas en html puis conversion en xls ?
http://pbadonf.fr/forum/viewtopic.php?id=1277


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#5 07-02-2012 12:56:45

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Sauvegarde au format excel8 très très lent

Sinon pour une somme très modique, je te conseille vivement d'utiliser DW2XLS

(tu peux faire un test, il y a une version d'évaluation il me semble)


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#6 07-02-2012 13:19:41

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: [RESOLU] Sauvegarde au format excel8 très très lent

wazou1812 a écrit:

xlat a écrit:

çà par exemple http://pbadonf.fr/forum/viewtopic.php?pid=29605#p29605
juste pour dire, hein...

Bonjour,


Non, cela ne correspond pas à ma demande, puisque cela fait une copie ligne à ligne (et méthode déjà utilisée mais relativement lente) , et que je voudrais faire une copie de l'ensemble de la ds en une seule fois dans la feuille excel.

Merci d'avance,

non, c'est bien multi-ligne et tout d'un coup : testé et éprouvé.


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#7 07-02-2012 13:40:04

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Sauvegarde au format excel8 très très lent

Je confirme les dires de xlat: c'est la technique que nous utilisons aussi pour les sauvegardes de datawindows sous Excel et Calc,
et la sauvegarde est effectuée en masse et non ligne par ligne.


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#8 07-02-2012 13:55:53

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [RESOLU] Sauvegarde au format excel8 très très lent

foon a écrit:

Je confirme les dires de xlat: c'est la technique que nous utilisons aussi pour les sauvegardes de datawindows sous Excel et Calc,
et la sauvegarde est effectuée en masse et non ligne par ligne.

Bonjour,

La méthode dont vous parlez, c'est celle-ci ?

Code: pb

string ls_lastclipboard
ls_lastclipboard = clipboard(ds_tmp.describe("datawindow.data"))
oleXls.Object.ActiveSheet.Paste
clipboard(ls_lastclipboard)



Mais par contre, vous n'avez pas les entetes de colonnes ?, et peut-être des formats qui ne sont pas correct, par exemple j'ai une zone qui contient des numéros de siren en caractère dans la dw, et qui se retrouvent en numérique dans le fichier excel.

Ou alors, vous avez ajouter d'autres petites astuces pour corriger ces petits problèmes ?

Merci

Hors ligne

 

#9 07-02-2012 14:31:06

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: [RESOLU] Sauvegarde au format excel8 très très lent

par exemple (dans la dw et dans l'xls) ?


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#10 07-02-2012 14:34:53

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [RESOLU] Sauvegarde au format excel8 très très lent

xlat a écrit:

par exemple (dans la dw et dans l'xls) ?

Si la méthode que vous utilisez est bien clipboad , pour commencer, avez vous les entetes de colonnes dans le fichier excel ainsi sauvegardé ?

Merci

Hors ligne

 

#11 07-02-2012 14:41:02

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Sauvegarde au format excel8 très très lent

Pour les entêtes de colonnes, les computes et autres, les problèmes de formattage, la solution est de balayer toutes les bandes de ta datawindow, et d'en récupérer le contenu objet par objet dans une string correctement formattée que tu pasteras ensuite dans ta feuille Excel (En une seule fois). C'est un peu plus élaboré que la récupération du simple contenu de "data", mais ca permet d'avoir tout le contenu de ta datawindow exporté sous Excel.


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#12 07-02-2012 15:48:59

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: [RESOLU] Sauvegarde au format excel8 très très lent

erasorz a écrit:

Sinon pour une somme très modique, je te conseille vivement d'utiliser DW2XLS

(tu peux faire un test, il y a une version d'évaluation il me semble)

je confirme que c'est assez pratique et bluffant!
néanmoins j'ai du recompiler la dll pour éviter d'avoir des colonnes/lignes supplémentaires quand je demandais les couleurs de background.


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#13 13-03-2012 14:28:49

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [RESOLU] Sauvegarde au format excel8 très très lent

Bonjour,

Pour information, le problème de lenteur n'existe plus en version 12 de PowerBuilder à condition d'utiliser la sauvegarde au format excel12 qui correspond à l'office 2007.

L'un des avantages est que nous ne sommes plus limités sur le nombre de ligne qui était de 65000 lignes jusqu’à l'office 2003, l'inconvénient est que les utilisateurs doivent avoir l'office 2007 pour ouvrir ces gros fichiers de plus de 65000 lignes, et sinon le simple convertisseur pour l'office 2007 suffira.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22