Filexls de Ramon Avendaño

D.Fernandez
Posts: 392
Joined: Wed Jul 31, 2013 1:14 pm
Location: Maldonado - Uruguay
Contact:

Filexls de Ramon Avendaño

Post by D.Fernandez »

Hola amigos:

Trato de pasar un DBF a Excel. La clase Filexls es la que me ha sido mas fácil y cómoda. (FWH1608)
No he logrado que tome en cuenta los formatos y las distintas letras.
Alguien tendría una sugerencia.
Dejo el código que si funciona, sin negritas y nada que deseo poner.
Saludos y gracias.

Code: Select all

LOCAL oXLS


       XLS oXLS FILE ".\Reporte.xls" AUTOEXEC
       DEFINE XLS FORMAT nFormat PICTURE '#,##0.00'
       DEFINE XLS FORMAT nFormat2 PICTURE '#0'    
       DEFINE XLS Format nFormat3 PICTURE "dd-dd-yyyy"
       DEFINE XLS FONT nFont1 NAME "VERDANA" HEIGHT 20 BOLD
       DEFINE XLS FONT nFont2 NAME "TAHOMA" HEIGHT 12 
       DEFINE XLS FONT nFont3 NAME "TAHOMA" HEIGHT 14 


       @ 1,2 XLS SAY "LISTADO DE CUENTAS"  FONT nFont1 OF oXls   
       @ 1,4 XLS SAY "Fecha:" + DTOC( Date() ) OF oXls   


       // CABECERAS
       nLen  := len( oBrExcel:aCols )
       nCol  := 1
       nFila := 3
              XLS COL 1 WIDTH 14  OF oXLS   
              @ nFila,1 XLS SAY "Fecha" BORDER FONT nFont1 OF oXls   

              XLS COL 2 WIDTH 50  OF oXLS
              @ nFila,2 XLS SAY "Detalle" BORDER FONT nFont1 OF oXls   

              XLS COL 3 WIDTH 20  OF oXLS
              @ nFila,3 XLS SAY "Importe" BORDER FONT nFont1 OF oXls   

              XLS COL 4 WIDTH 20  OF oXLS
              @ nFila,4 XLS SAY "Saldo " BORDER font NfONT1 OF oXls   


       nCol  := 1
       nFila++   
       nFila++   

        // DATOS
        DbSelectArea( DBGRAL )
        (DBGRAL)->(dbGoTop())
        while !(DBGRAL)->(Eof())
  
                     cText := oBrExcel:aCols[1]:Value()
                      @ nFila, nCol XLS SAY cText FORMAT nFormat3 OF oXls    
                      ncol++
              
                      cText := oBrExcel:aCols[3]:Value()
                      @ nFila, nCol XLS SAY cText FORMAT nFormat OF oXls    
                      ncol++
              
                      cText := oBrExcel:aCols[4]:Value()
                      @ nFila, nCol XLS SAY cText FORMAT nFormat2 OF oXls    
                      ncol++

                      cText := oBrExcel:aCols[5]:Value()
                      @ nFila, nCol XLS SAY cText FORMAT nFormat2 OF oXls    
                     // ncol++
                     nfila++
                     nCol:=1
                     (DBGRAL)->(dbskip())
        end While    
        
        nFila++
  
   ENDXLS oXLS

Return(.F.)
Dario Fernandez
FWH, Harbour, BCC, MySql & MariaDB, tData, Dbf/Cdx
VSCode.
Maldonado - Uruguay
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: Filexls de Ramon Avendaño

Post by joseluisysturiz »

Con TOleAuto creo te seria mas facil, comodo y rapido...aca un ejemplo y tengo bastante sobre el tema, saludos... :shock:

Code: Select all

   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
 
Dios no está muerto...

Gracias a mi Dios ante todo!
D.Fernandez
Posts: 392
Joined: Wed Jul 31, 2013 1:14 pm
Location: Maldonado - Uruguay
Contact:

Re: Filexls de Ramon Avendaño

Post by D.Fernandez »

Muchas gracias José Luis.
Lo pruebo y aviso.

Saludos. Rubén Dario Fernandez
Dario Fernandez
FWH, Harbour, BCC, MySql & MariaDB, tData, Dbf/Cdx
VSCode.
Maldonado - Uruguay
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Filexls de Ramon Avendaño

Post by horacio »

Yo trabajo con la clase TFileXls sin problemas. Lo mejor de esta clase es que escribe directamente el archivo en disco y no necesitas tener instalado Excel y es muchísimo mas rápido que atacarlo con TAutoOle.

Saludos
rubenfernandez01
Posts: 23
Joined: Sun Sep 20, 2015 1:41 am

Re: Filexls de Ramon Avendaño

Post by rubenfernandez01 »

horacio wrote:Yo trabajo con la clase TFileXls sin problemas. Lo mejor de esta clase es que escribe directamente el archivo en disco y no necesitas tener instalado Excel y es muchísimo mas rápido que atacarlo con TAutoOle.

Saludos
Horacio, gracias. El problema es que no me hace caso a negritas y tamaños. A ti te funcionan?

Gracias.

Enviado desde mi LG-H860 mediante Tapatalk
rubenfernandez01
Posts: 23
Joined: Sun Sep 20, 2015 1:41 am

Re: Filexls de Ramon Avendaño

Post by rubenfernandez01 »

Hola, alguien tendría un ejemplo con filexls que tenga diferentes tipos de letra?

Gracias.

Enviado desde mi LG-H860 mediante Tapatalk
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Filexls de Ramon Avendaño

Post by horacio »

Te posteo un ejemplo

Code: Select all

//----------------------------------------------------------------------------//    
Function XlsFacturas()

    Local nFormat1
    Local nFormat2
    Local oFileXLS
    Local nFont1
    Local nFont2
    Local nFont3
    Local nFont4
    Local nFont5
    Local nFor     
    Local i
    Local nImporte := 0
    Local nAbonado := 0
    Local nSaldo   := 0
    Local cFile    := Hb_CurDrive() + ':\' + CurDir() + '\excel\listado_facturas.xls'
    Local oRec     := oClone( oRs )
    Memvar o
    
    If( !IsDirectory( hb_CurDrive() + ':\' + Curdir() + '\excel' ) )
       MakeDir( hb_CurDrive() + ':\' + Curdir() + '\excel' )
    End
    If( File( cFile ) )
       Ferase( cFile )
    End
    o : nRowXls := 1
    Define Xls Format nFormat2 Picture '#,##0.00'   // para euros
    
    Define Xls Font nFont1 Name "Staccato222 BT" Height 10 Bold
    Define Xls Font nFont2 Name "Arial" Height 8 Bold
    Define Xls Font nFont3 Name "Arial" Height 8
    Define Xls Font nFont4 Name "Arial" Height 12 //Bold
    Define Xls Font nFont5 Name "Staccato222 BT" Height 8 Bold  
    
    Xls oFileXLS FILE &cFile 
    
    Xls Col  1 Width  1 OF oFileXls
    Xls Col  2 Width 10 OF oFileXls
    Xls Col  3 Width 10 OF oFileXls
    Xls Col  4 Width 30 OF oFileXls
    Xls Col  5 Width 30 OF oFileXls
    Xls Col  6 Width 10 OF oFileXls
    Xls Col  7 Width 10 OF oFileXls
    Xls Col  8 Width 10 OF oFileXls

    o : nRowXls++
    @ o : nRowXls, 2 Xls Say o : cEmpresa Font nFont1 OF oFileXls Alignament ALING_LEFT
    o : nRowXls++
    @ o : nRowXls, 2 Xls Say 'LISTADO DE FACTURAS ' + If( !Empty( cTitulo ), cTitulo, '' ) Font nFont3 OF oFileXls Alignament ALING_LEFT
    o : nRowXls++ 
    @ o : nRowXls, 2 Xls Say 'F. DE EMISIÓN: ' Font nFont3 OF oFileXls Alignament ALING_LEFT
    @ o : nRowXls, 4 Xls Say DToC( Date() ) Font nFont2 OF oFileXls Alignament ALING_LEFT
    o : nRowXls++ 
    o : nRowXls++ 
    o : nRowXls++ 
    o : nRowXls++ 
    
    @ o : nRowXls, 2 Xls Say 'Nº FACT'   Font nFont2 OF oFileXls Alignament ALING_LEFT BORDER_TOP + BORDER_LEFT + BORDER_BOTTOM            
    @ o : nRowXls, 3 Xls Say 'FECHA'     Font nFont2 OF oFileXls Alignament ALING_LEFT BORDER_TOP + BORDER_BOTTOM           
    @ o : nRowXls, 4 Xls Say 'ALUMNO'    Font nFont2 OF oFileXls Alignament ALING_LEFT BORDER_TOP + BORDER_BOTTOM           
    @ o : nRowXls, 5 Xls Say 'CONCEPTO'  Font nFont2 OF oFileXls Alignament ALING_LEFT BORDER_TOP + BORDER_BOTTOM           
    @ o : nRowXls, 6 Xls Say 'IMPORTE'   Font nFont2 OF oFileXls Alignament ALING_LEFT BORDER_TOP + BORDER_BOTTOM           
    @ o : nRowXls, 7 Xls Say 'ABONADO'   Font nFont2 OF oFileXls Alignament ALING_LEFT BORDER_TOP + BORDER_BOTTOM           
    @ o : nRowXls, 8 Xls Say 'SALDO'     Font nFont2 OF oFileXls Alignament ALING_LEFT BORDER_TOP + BORDER_RIGHT + BORDER_BOTTOM            
    o : nRowXls++ 
    @ o : nRowXls, 2 Xls Say '' Font nFont3 OF oFileXls Alignament ALING_CENTER BORDER_LEFT
    @ o : nRowXls, 8 Xls Say '' Font nFont3 OF oFileXls Alignament ALING_CENTER BORDER_RIGHT
    o : nRowXls++ 
    While( !oRec : Eof() )
        @ o : nRowXls, 2 Xls Say StrZero( Val( o : nPtoVta ), 4 ) + '-' + StrZero( oRec : id_factura, 6 ) Font nFont3 OF oFileXls Alignament ALING_CENTER BORDER_LEFT
        @ o : nRowXls, 3 Xls Say DToC( oRec : fecha ) Font nFont3 OF oFileXls Alignament ALING_CENTER
        @ o : nRowXls, 4 Xls Say oRec : alumno      Font nFont3 OF oFileXls Alignament ALING_LEFT
        @ o : nRowXls, 5 Xls Say oRec : concepto      Font nFont3 OF oFileXls Alignament ALING_LEFT
        oFileXls : Number( o : nRowXls, 6, oRec : importe, .f., .f., nFont5, nFormat2 ) 
        nImporte += oRec : importe
        oFileXls : Number( o : nRowXls, 7, oRec : pagado, .f., .f., nFont5, nFormat2 )              
        nAbonado += oRec : pagado
        oFileXls : Number( o : nRowXls, 8, oRec : importe - oRec : pagado, .f., .f., nFont5, nFormat2, .f., BORDER_RIGHT )  
        nSaldo += oRec : importe - oRec : pagado
        oRec : Skip()
        o : nRowXls++           
    Enddo
    @ o : nRowXls, 2 Xls Say '' Font nFont3 OF oFileXls Alignament ALING_CENTER BORDER_LEFT
    @ o : nRowXls, 8 Xls Say '' Font nFont3 OF oFileXls Alignament ALING_CENTER BORDER_RIGHT
    o : nRowXls++           
    @ o : nRowXls, 2 Xls Say '' Font nFont3 OF oFileXls Alignament BORDER_LEFT + BORDER_BOTTOM
    @ o : nRowXls, 3 Xls Say '' Font nFont3 OF oFileXls Alignament BORDER_BOTTOM
    @ o : nRowXls, 4 Xls Say '' Font nFont3 OF oFileXls Alignament BORDER_BOTTOM
    @ o : nRowXls, 5 Xls Say '' Font nFont3 OF oFileXls Alignament BORDER_BOTTOM
    oFileXls : Number( o : nRowXls, 6, nImporte, .f., .f., nFont5, nFormat2, .f., BORDER_BOTTOM  )  
    oFileXls : Number( o : nRowXls, 7, nAbonado, .f., .f., nFont5, nFormat2, .f., BORDER_BOTTOM  )  
    oFileXls : Number( o : nRowXls, 8, nSaldo, .f., .f., nFont5, nFormat2, .f., BORDER_RIGHT + BORDER_BOTTOM  ) 

    SET Xls To Printer Footer "Desarrollos Digitales" Top Margin 0.6 BOTTOM MARGIN 0.8 LEFT MARGIN 0 OF oFileXls GRIDLINES
    EndXls oFileXls
    MsgRun( "Exportando datos, espere por favor ...",, { || ShellExecute( o : oWndMain : hWnd,, cFile,,, 3 ) } )
    Return 0    
Y la imagen

Image

Saludos
D.Fernandez
Posts: 392
Joined: Wed Jul 31, 2013 1:14 pm
Location: Maldonado - Uruguay
Contact:

Re: Filexls de Ramon Avendaño

Post by D.Fernandez »

Horacio muchas gracias, pero no puedo lograrlo.

Lo hago de una dbf a la planilla y me da error
o : nRowXls := 1

Es muy posible que mi versión de FileXls sea muy vieja. Si puedes enviármela a zonadario@gmail.com te lo agradecería mucho.

Gracias y saludos.
Dario Fernandez
FWH, Harbour, BCC, MySql & MariaDB, tData, Dbf/Cdx
VSCode.
Maldonado - Uruguay
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Filexls de Ramon Avendaño

Post by horacio »

Ramon, la variable o : nRowXls declarala como public de esta manera

Code: Select all

Public nRowXls //sin la o
 
Y reemplaza en el código a o : nRowXls por nRowXls. La clase la uso desde hace seis años sin actualizar a una versión nueva ( no sé si existe ) pero si quieres te la envío.

Saludos
D.Fernandez
Posts: 392
Joined: Wed Jul 31, 2013 1:14 pm
Location: Maldonado - Uruguay
Contact:

Re: Filexls de Ramon Avendaño

Post by D.Fernandez »

Si te lo agradecería.

Gracias y saludos.
Dario Fernandez
FWH, Harbour, BCC, MySql & MariaDB, tData, Dbf/Cdx
VSCode.
Maldonado - Uruguay
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Filexls de Ramon Avendaño

Post by horacio »

Enviado ...

Saludos
D.Fernandez
Posts: 392
Joined: Wed Jul 31, 2013 1:14 pm
Location: Maldonado - Uruguay
Contact:

Re: Filexls de Ramon Avendaño

Post by D.Fernandez »

Gracias Horacio. Muy amable.

Saludos cordiales

Ruben Dario Fernandez
Dario Fernandez
FWH, Harbour, BCC, MySql & MariaDB, tData, Dbf/Cdx
VSCode.
Maldonado - Uruguay
elmoiquique
Posts: 257
Joined: Wed May 16, 2007 9:40 pm
Location: Iquique Chile

Re: Filexls de Ramon Avendaño

Post by elmoiquique »

Hola

Alguien sabe como colocar colores a las celdas ???? con esta funcion
Fivewin 11.07
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Filexls de Ramon Avendaño

Post by horacio »

En la clase no vi ninguna data o método para colorear las celdas.

Saludos
elmoiquique
Posts: 257
Joined: Wed May 16, 2007 9:40 pm
Location: Iquique Chile

Re: Filexls de Ramon Avendaño

Post by elmoiquique »

y por ultimo las font, se le puede cambiar el color
Fivewin 11.07
Post Reply