Hola Lubin,
puedes asignar valores a las celdas de la forma como lo indica el ejemplo anterior,
en lo personal, los titulos de mis reportes lo asigno de la sig. forma.
- Code: Select all Expand view RUN
nRow := 3
oSheet:Cells( nRow, 1 ):Value = 'Titulo1 '
oSheet:Cells( nRow, 2 ):Value = 'Titulo2'
oSheet:Cells( nRow, 3 ):Value = 'Titulo3'
y en cuanto a la domentacion sobre excel, lo puedes encontrar en este maravilloso foro de fw.
en lo personal muchas cosas lo he sa cado de san google, VB y Excel,
es dependiendo de lo que quieras hacer.
te pongo un ejemplo en el cual uso algunas cosillas como por ejemplo, poner los titulos en negrita,
poner los titulos de un determinado color,
etc.
saludos.
- Code: Select all Expand view RUN
METHOD Excel() CLASS InformeReclutas
local oRange
local cFile := "\"+CurDir()+'\bmps\logo1.jpg'
local oClip
local cText := ''
local nPasteRow
local cPic := '9,999,999.99'
local i := 1
local nReclutador, cPv
local oWait
waiton(space(40), @oWait )
::nRow := 1
::oExcel := CREATEOBJECT( "Excel.Application" )
::oBook := ::oExcel:WorkBooks:Add()
::oSheet := ::oBook:Worksheets(1)
::oSheet:name:='RECLUTAMIENTO'
::oExcel:Sheets( 'RECLUTAMIENTO' ):Select()
::oSheet := ::oExcel:Get( "ActiveSheet" )
::oExcel:Visible = .T.
oRange := ::oSheet:Range("A1")
::oSheet:Shapes:AddPicture(cFile,.F., .T., oRange:Left, oRange:Top, 170, 70)
::oSheet:Cells( ::nRow, 6 ):Value = ( ::cStatus )->cia
::nRow ++
::oSheet:Cells( ::nRow, 6 ):Value = 'RECLUTAMIENTO'
::nRow ++
::oSheet:Cells( ::nRow, 6 ):Value = 'de semana: ' + strzero( ::nIni,2 ) +'/' + str(::nYear,4) +;
' a semana: ' + strzero( ::nFin,2 ) +'/' + str(::nYear,4)
::nRow +=3
::oSheet:Cells( ::nRow, 1 ):Value = 'CONS'
::oSheet:Cells( ::nRow, 2 ):Value = 'P.V.'
::oSheet:Cells( ::nRow, 3 ):Value = 'GRUPO'
::oSheet:Cells( ::nRow, 4 ):Value = 'UNIDAD'
::oSheet:Cells( ::nRow, 5 ):Value = 'CLAVE'
::oSheet:Cells( ::nRow, 6 ):Value = 'NOMBRE RECLUTADORA'
::oSheet:Cells( ::nRow, 7 ):Value = 'CLAVE'
::oSheet:Cells( ::nRow, 8 ):Value = 'NOMBRE RECLUTADORA'
::oSheet:Cells( ::nRow, 9 ):Value = 'STATUS'
::oSheet:Cells( ::nRow, 10 ):Value = 'SEM_ING'
::oSheet:Cells( ::nRow, 11 ):Value = 'TOTAL'
::oSheet:Cells( ::nRow, 12 ):Value = 'PEDIDO'
::nRow++
nPasteRow := ::nRow
oClip := TClipBoard():New()
DbSelectArea( ::cReclutas )
ordsetfocus( 3 )
set filter to field->grupo >= ::nGpo1 .and. field->grupo <= ::nGpo2 ;
.and. field->sem_ini >= ::nIni .and. field->sem_fin <= ::nFin ;
.and. field->anio = ::nYear
dbgotop()
while !eof()
if field->grupo >= ::nGpo1 .and. field->grupo <= ::nGpo2 ;
.and. field->sem_ini >= ::nIni .and. field->sem_fin <= ::nFin ;
.and. field->anio = ::nYear
oWait:say(1,1, cstr(i) + space(10) )
nReclutador := field->reclutador
cPv := ''
dbselectArea( ::cClientes )
ordsetfocus( 11 )
dbseek( strzero(nReclutador,10) )
if val( field->clave ) = 1
cPv := '*'
endif
DbSelectArea( ::cReclutas )
cText += cstr( i )
cText += chr(9) + cPv
cText += chr(9) + cstr(field->grupo)
cText += chr(9) + field->unidad
cText += chr(9) + cstr(field->reclutador)
cText += chr(9) + field->nom_rec
cText += chr(9) + cstr(field->alterno)
cText += chr(9) + field->nombre
cText += chr(9) + alltrim( field->status )
cText += chr(9) + cstr(field->sem_ing)
cText += chr(9) + iif( field->total > 0, cstr(field->total), '' )
cText += chr(9) + cstr(field->pedido)
cText += CRLF
if field->total > 0 .and. !empty(cText)
for x := 1 to 12
::oSheet:Cells( ::nRow,11 ):Font:Bold := .T.
if field->total > 1
::oSheet:Cells( ::nRow,x ):Interior:Color := nRGB( 255,204, 255 )
endif
next
endif
::nRow++
if Len( cText ) > 16000
oClip:SetText( cText )
::oSheet:Cells( nPasteRow, 1 ):Select()
::oSheet:Paste()
oClip:Clear()
cText := ""
nPasteRow := ::nRow
endif
i ++
endif
sysrefresh()
DbSelectArea( ::cReclutas )
dbskip()
end
if ! Empty( cText )
oClip:SetText( cText )
::oSheet:Cells( nPasteRow, 1 ):Select()
::oSheet:Paste()
oClip:Clear()
cText := ""
endif
waitoff(@oWait)
DbSelectArea( ::cReclutas )
set filter to
oClip:Close()
oClip:End()
for nFor := 1 to 6
::oSheet:Rows( nFor ):Font:Bold := .T.
next
for nFor := 1 to 6
::oSheet:Cells( 6, nFor ):Interior:Color := nRGB( 255,204, 0 )
next
for nFor := 7 to 12
::oSheet:Cells( 6, nFor ):Interior:Color := nRGB( 255,255, 0 )
next
::oExcel:Range( "7:7" ):Select() //despues de los titulos hace un freeze
::oExcel:Application:ActiveWindow:FreezePanes := .T.
::oSheet:Columns( "A:L" ):AutoFit()
RETURN NIL