Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
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.
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
çà par exemple http://pbadonf.fr/forum/viewtopic.php?pid=29605#p29605
juste pour dire, hein...
Hors ligne
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
ça marche pas le saveas en html puis conversion en xls ?
http://pbadonf.fr/forum/viewtopic.php?id=1277
Hors ligne
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)
Hors ligne
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é.
Hors ligne
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.
Hors ligne
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 ?
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
par exemple (dans la dw et dans l'xls) ?
Hors ligne
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
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.
Hors ligne
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.
Hors ligne
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