As we explained above, it is not necessary to Hide/Unhide columns for exporting to Excel. You need to have modified my example to suit the present purpose.
Here is the modified function:
function ExportToExcel( oBrowse )
local aCols := {}
local oDlg, oBrw
AEval( oBrowse:aCols, { |o,i| AAdd( aCols, { !o:lHide, i, o:cHeader } ) } )
DEFINE DIALOG oDlg SIZE 300,400 PIXEL TRUEPIXEL
@ 60,20 XBROWSE oBrw SIZE -20,-40 PIXEL OF oDlg ;
DATASOURCE aCols ;
COLUMNS 1,2,3 ;
HEADERS "", "No", "Header" ;
COLSIZES 40, 40, 100 ;
CELL LINES NOBORDER
WITH OBJECT oBrw
:nStretchCol := STRETCHCOL_WIDEST
WITH OBJECT :aCols[ 1 ]
:SetCheck( nil, .t. )
:nHeadBmpNo := 2
END
:CreateFromCode()
END
@ 20,10 BTNBMP PROMPT "ToExcel" SIZE 100,30 FLAT PIXEL OF oDlg ;
ACTION ( aCols := {}, ;
AEval( oBrw:aArrayData, { |a| If( a[ 1 ], AAdd( aCols, oBrowse:aCols[ a[ 2 ] ] ), nil ) } ), ;
oBrowse:ToExcel( nil, nil, aCols ) ;
)
@ 20,180 BTNBMP PROMPT "Close" SIZE 100,30 FLAT PIXEL OF oDlg ACTION oDlg:End()
@ 370,020 SAY "Ctrl-Up/Ctrl-Dn to Swap Rows Up/Down" SIZE 260,20 PIXEL OF oDlg ;
CENTER VCENTER COLOR CLR_HRED, oDlg:nClrPane
ACTIVATE DIALOG oDlg CENTERED
return nil
User can select which columns are to be exported and also the order in which they are to be exported.