oExcel := TOleAuto():New( "Excel.Application" )
oExcel:WorkBooks:Add()
// ESPECIFICAS EN QUE HOJA QUIERES QUE SE INICIE Y TRABAJE, SE SELECCIONA Y LUEGO ACTIVA
*** oExcel:Sheets("Hoja2"):Select(); oHoja := oExcel:ActiveSheet()
oHoja := oExcel:ActiveSheet() // SINO ESPECIFICAS QUE HOJA, TOMARA POR DEFECTO AL HOJA1
*** oHoja:PageSetup:Orientation := 2 // 1=xlPortrai(vertical), 2=xlLandscape(horizontal)
*** oHoja:Cells:Font:Name := "Arial" // ESPECIFICA TIPO DE LETRA PARA TODA LA HOJA
*** oHoja:Cells:Font:Size := 12 // ESPECIFICA TAMANO DE LETRA PARA TODA LA HOJA
*** oHoja:Cells(1, nFor):Font:Size := 16 // DETERMINA TAMAÑO DE LETRA A USAR EN UNA CELDA
*** oHoja:Cells(1, 1):Font:Bold := .t. // PONE EN NEGRITAS VALOR DE UNA CELDA
*** oHoja:Cells(1, 1):Font:ColorIndex := 5 // COLOR PREESTABLECIDO DE EXCEL DEL CONTENIDO DE LA CELDA
*** oHoja:Cells(3, 2):Font:Color := RGB(255,0,0) // COLOR DEL CONTENIDO DE LA CELDA
*** oHoja:Cells(1, 4):Interior:ColorIndex := 16 // COLOR PREESTABLECIDO DE EXCEL DE LA CELDA
*** oHoja:Cells(3, 2):Interior:Color := RGB(200,160,35) // COLOR DE LA CELDA
*** oHoja:Cells(3, 1):NumberFormat := "$ ###,##0.00" // FORMATEAR CELDA NUMERICA
*** oHoja:Cells(7, 1):FormulaLocal:="=SUMA(A1:A5)" // APLICAR FORMULA A UNA CELDA
*
*** oHoja:Columns(n):ColumnWidth := n // ANCHO DE COLUMNA - aun no probado - 31/05/2016
*** oHoja:Columns(n):ColumnHeight := n // ALTO DE COLUMNA - aun no probado - 31/05/2016
oHoja:Cells(1, 1):Value := "Llamada"
oHoja:Cells(1, 2):Value := "Serial"
oHoja:Cells(1, 3):Value := "Fecha de atención"
oHoja:Cells(1, 4):Value := "Tiempo de Viaje"
oHoja:Cells(1, 5):Value := "Inicio del trabajo"
oHoja:Cells(1, 6):Value := "Fin del trabajo"
oHoja:Cells(1, 7):Value := "Reporte - Comentario"
oHoja:Shapes:AddPicture( "C:\SISINGE\SERVICIOS\BITMAPS\firma.jpg", .f., .t., 100, 100, 80, 100 ) // AGREGA IMAGEN A EXCEL
oHoja:Shapes:AddPicture( "C:\SISINGE\SERVICIOS\BITMAPS\firma.jpg", .t., .t., 30, 30, 40, 60 ) // AGREGA IMAGEN A EXCEL
/*
Hoja1.Shapes.AddPicture "ruta:\Img.jpg", msoFalse, msoCTrue, Hoja1.Range("A1").Left, Hoja1.Range("A1").Top, Hoja1.Range("A1").Width, Hoja1.Range("A1").Height
esto lo que hace es colocar la imagen en la celda especifica, y la imagen toma el alto y ancho de la celda.
*/
oQry:GOTOP()
DO WHILE !oQry:EOF()
oHoja:Cells(nRow, 1):Value := AllTrim( cValToChar( oQry:rep_num_llamada ) )
oHoja:Cells(nRow, 2):Value := AllTrim( oQry:rep_num_serial )
oHoja:Cells(nRow, 3):Value := oQry:rep_fch_servicio
//
oHoja:Cells(nRow, 4):Value := SUBST( oQry:rep_tiempo_viaje_inicio, 1, 5 )
oHoja:Cells(nRow, 5):Value := SUBST( oQry:rep_tiempo_rep_inicio, 1, 5 )
oHoja:Cells(nRow, 6):Value := SUBST( oQry:rep_tiempo_rep_fin, 1, 5 )
//
oHoja:Cells(nRow, 7):Value := AllTrim( cValToChar( oQry:rep_num_reporte ) ) + " " +;
AllTrim( oQry:rep_observa1 ) + AllTrim( oQry:rep_observa2 ) +;
AllTrim( oQry:rep_observa3 ) + AllTrim( oQry:rep_observa4 ) +;
AllTrim( oQry:rep_observa5 ) + AllTrim( oQry:rep_observa6 )
oQry:SKIP()
nRow++
ENDDO
// DESPUES DE CARGADO LOS DATOS A EXCEL, ES QUE SE HACEN LOS AJUSTES
FOR nFor := 1 TO 7
oHoja:Cells(1, nFor):Font:Bold := .t. // COLOCA TEXTO DE UNA CELDA EN NEGRITA
oHoja:Cells(1, nFor):Interior:Color := RGB(192,192,192) // COLOR FONDO DE LA CELDA(gris claro)
//
oHoja:Columns(nFor):AutoFit() // AJUSTA LA COLUMNA A LA CELDA CON EL TEXTO MAS GRANDE
NEXT
oHoja:Cells( 7, 1 ):FormulaLocal:="=SUMA(A1:A5)" // APLICAR FORMULA A UNA CELDA
oHoja:Range("A1:F" + AllTrim( Str( nRow ) )):HorizontalAlignment := 7 // ALINEA(centra) QUE ESTE EN UN RANGO DE CELDAS HORIZONTALMENTE
oHoja:Range("G1"):HorizontalAlignment := 7 // ALINEA(centra) QUE ESTE EN UN RANGO DE CELDAS HORIZONTALMENTE
//
oHoja:Cells(1, 1):Select() // POSICIONA EL CURSO EN LA CELDA ESPECIFICADA
oExcel:Visible := .t. // MOSTRAR O NO HOJA DE EXCEL
oHoja:PrintPreview() // MUESTRA PREVIEW DE LA HOJA ACTIVA
oHoja:SaveAs( 'c:' + 'PRUEBA.XLS' ) // SALVAR ARCHIVO
oHoja:End()
oExcel:WorkBooks:Close() //oExcel:End()