Après windows pour les nuls, voici PB pour les bons (ou presque).

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 02-09-2020 13:05:03

bdf94  
Membre Power Geek
Date d'inscription: 04-10-2006
Messages: 178
Pépites: 2,211
Banque: 0

[RESOLU] DW Export XLS format

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

 

#2 02-09-2020 18:37:11

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

Re: [RESOLU] DW Export XLS format

Il faut regarder du coté des objets OLE pour ce genre de traitements post-export


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

Hors ligne

 

#3 03-09-2020 07:39:59

bdf94  
Membre Power Geek
Date d'inscription: 04-10-2006
Messages: 178
Pépites: 2,211
Banque: 0

Re: [RESOLU] DW Export XLS format

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

 

#4 03-09-2020 08:52:35

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

Re: [RESOLU] DW Export XLS format

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)

Code: pb

//////////////////////////////////////////////////////////////////
// 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

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

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22