Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
je voudrais exporter une DW issue d'une SP vers du Excel (XLS ou XLSX) mais en gardant le format, ou en ayant un format lisible dans Excel.
Actuellement, quand je fais un saveas, par exemple :
- les colonnes du tableau Excel ont une largeur classique et ne sont pas ajuster automatiquement au contenu
- les entêtes de colonnes sont en police normal, pas en gras
- les formats des montants n'ont pas de séparateurs de milliers (point moins important)
Est-ce que quelqu'un peut m'aider ?
Merci d'avance
Dernière modification par bdf94 (09-09-2020 08:02:09)
Hors ligne
Il faut regarder du coté des objets OLE pour ce genre de traitements post-export
Hors ligne
Il faut regarder du coté des objets OLE pour ce genre de traitements post-export
Est-ce que quelqu'un a déjà fait ça ?
Hors ligne
bdf94 a écrit:
Il faut regarder du coté des objets OLE pour ce genre de traitements post-export
Est-ce que quelqu'un a déjà fait ça ?
Bien sûr
Il y a des exemples sur ce forum
Voici un exemple de fonction d'export Excel avec affichage de l'entête en gras, et autofit des cellules
La datawindow exportée est dans la variable d'instance idw dans cet exemple, et ses données sont exportées dans le fichier Excel via le Clipboard (partie de code non visible ici)
////////////////////////////////////////////////////////////////// // Fonction permettant de copier l'ensemble des données de la // datawindow dans une feuille excel ////////////////////////////////////////////////////////////////// string ls_err, ls_cellule long ll_row, ll_rowcount, ll_ret // Export directly to Excel OleObject lole_OLE, lole_Sheet long result // Copie par clipboard du contenu de la DW i_dw if isvalid(idw) and not isnull(idw) then lole_OLE = CREATE OleObject SetPointer( HourGlass! ) result =lole_OLE.ConnectToNewObject( 'excel.application' ) GarbageCollect() if result = 0 then lole_OLE.Workbooks.Add GarbageCollect() lole_sheet =lole_OLE.Application.ActiveWorkbook.WorkSheets[1] GarbageCollect() lole_Sheet.Range("A1:A1").Select GarbageCollect() lole_Sheet.Paste() GarbageCollect() lole_Sheet.Range( "A1:ZZ1").Select GarbageCollect() lole_OLE.Selection.Font.Bold = True GarbageCollect() lole_Sheet.Range("A1:A1").Select GarbageCollect() lole_Sheet.Columns( "A1:ZZ1" ).EntireColumn.AutoFit GarbageCollect() lole_OLE.Application.Visible = TRUE GarbageCollect() lole_OLE.DisconnectObject() GarbageCollect() else CHOOSE CASE result CASE -1 ls_err = "Invalid Call: the argument is the Object property of a control" CASE -2 ls_err = "Class name not found" CASE -3 ls_err = "Object could not be created" CASE -4 ls_err = "Could not connect to object" CASE -9 ls_err = "Error in Automation" END CHOOSE MessageBox("Automation Error",ls_err +"~r~n Could not Open Excel, However Informations are available in Windows ClipBoard") end if DESTROY lole_OLE Yield() end if
Hors ligne