Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Re-re-bonjour,
Oui je sais j'avais dit que je viendrais plus mais bon...
Je vous explique mon problème:
Tout part d'une DataWindow banale, ensuite je l'exporte dans un fichier Excel (grace en partie à vous d'ailleurs ) et dans une autre Window je lie un OLEControl à ce fichier Excel.
Ma question : Y a t'il un moyen de faire ça sans avoir à générer le fichier Excel ?
Je sais pas si je suis bien clair mais hésitez pas à poser des questions!
Dernière modification par Mr Pink Eyes (26-06-2007 08:40:47)
Hors ligne
tu utilises un ole excel ?
et tu veux ouvrir une feuille directement avec des données d'une datawindow ?
Hors ligne
Exactement! Mais sans avoir à créer physiquement de fichier .xls
Hors ligne
Hors ligne
bon je me plonge dedans! Mais on dirait que cela crée le fichier non ?
Hors ligne
je comprends pas bien à quoi te sert la deuxième window ??? A afficher ce que tu avais dans ta première datawindow ?
Parce que si c'est le cas c'est effectivement inutile de passer par un fichier excel ...
Hors ligne
inferni a écrit:
je comprends pas bien à quoi te sert la deuxième window ??? A afficher ce que tu avais dans ta première datawindow ?
Parce que si c'est le cas c'est effectivement inutile de passer par un fichier excel ...
Les utilisateurs du logiciel veulent pouvoir faire un copier/coller des résultats de la DW. Je pensais faire un export tout simple au début mais avec le système de serveur, l'appli n'a pas les droits pour accéder aux lecteurs des utilisateurs. Du coup j'affiche le résultat sous forme de fiche excel et ils peuvent faire leur copier/coller.
Hors ligne
Bon j'ai un peu de mal à comprendre la portion de code suivante :
// Open the excel file lo_Excel.Application.Workbooks.Open ( ls_destination ) lo_Workbook = lo_Excel.Application.ActiveWorkbook lo_Sheet = lo_Excel.Application.ActiveSheet
à quoi correspond ls_destination ? une string locale mais qui représente quoi ?
D'autre part je ne vois pas où relier ma DW avec le OLEObject.
Hors ligne
J'ai finalement réussi à m'en sortir en m'appuyant sur un code trouvé sur le site de sybase. Si ça interresse du monde :
long numcols , numrows , c, r OLEObject xlapp , xlsub int ret // Set the # of columns and rows to process // Currently Set to copy the entire DW numcols = long(dw_1.Object.DataWindow.Column.Count) numrows = dw_1.RowCount() // Create the oleobject variable xlapp xlApp = Create OLEObject // Connect to Excel and check the return code ret = xlApp.ConnectToNewObject( "Excel.Sheet" ) if ret < 0 then MessageBox("La connection à Excel a échoué !",string(ret)) return end if // Open a particular Excel file //xlApp.Application.Workbooks.Open("k:\test-bruno.xls") //,false,true // Make Excel visible xlApp.Application.Visible = true // Resolve the Excel reference once // This technique shortens the script and improves performance xlsub = xlapp.Application.ActiveWorkbook.Worksheets[1] // Loop thru the Datawindow and Excel sheet // The for/next loop copies all rows for each column For c = 1 to numcols For r = 1 to numrows xlsub.cells[r,c] = dw_1.object.data[r,c] Next Next // Save opened file //xlApp.Application.Activeworkbook.Save() // SaveAs a different filename //xlApp.Application.Activeworkbook.SaveAs("c:\file2.xls") // clean up messagebox("Fermeture du document","Avez-vous fini de vous servir du document ?") xlApp.DisConnectObject() Destroy xlapp
Voilà! Et encore merci à tous pour votre écoute!
Hors ligne