Page 1 of 2
Filexls de Ramon Avendaño
Posted: Fri Apr 28, 2017 7:01 pm
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.)
Re: Filexls de Ramon Avendaño
Posted: Sat Apr 29, 2017 5:21 pm
by joseluisysturiz
Con TOleAuto creo te seria mas facil, comodo y rapido...aca un ejemplo y tengo bastante sobre el tema, saludos...
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
Re: Filexls de Ramon Avendaño
Posted: Sat Apr 29, 2017 7:20 pm
by D.Fernandez
Muchas gracias José Luis.
Lo pruebo y aviso.
Saludos. Rubén Dario Fernandez
Re: Filexls de Ramon Avendaño
Posted: Sun Apr 30, 2017 5:43 pm
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
Re: Filexls de Ramon Avendaño
Posted: Sun Apr 30, 2017 6:44 pm
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
Re: Filexls de Ramon Avendaño
Posted: Sun Apr 30, 2017 10:01 pm
by rubenfernandez01
Hola, alguien tendría un ejemplo con filexls que tenga diferentes tipos de letra?
Gracias.
Enviado desde mi LG-H860 mediante Tapatalk
Re: Filexls de Ramon Avendaño
Posted: Mon May 01, 2017 11:35 am
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
Saludos
Re: Filexls de Ramon Avendaño
Posted: Mon May 01, 2017 3:53 pm
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.
Re: Filexls de Ramon Avendaño
Posted: Mon May 01, 2017 4:23 pm
by horacio
Ramon, la variable o : nRowXls declarala como public de esta manera
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
Re: Filexls de Ramon Avendaño
Posted: Mon May 01, 2017 4:48 pm
by D.Fernandez
Si te lo agradecería.
Gracias y saludos.
Re: Filexls de Ramon Avendaño
Posted: Mon May 01, 2017 11:05 pm
by horacio
Enviado ...
Saludos
Re: Filexls de Ramon Avendaño
Posted: Tue May 02, 2017 12:10 am
by D.Fernandez
Gracias Horacio. Muy amable.
Saludos cordiales
Ruben Dario Fernandez
Re: Filexls de Ramon Avendaño
Posted: Mon Mar 05, 2018 9:19 pm
by elmoiquique
Hola
Alguien sabe como colocar colores a las celdas ???? con esta funcion
Re: Filexls de Ramon Avendaño
Posted: Mon Mar 05, 2018 9:30 pm
by horacio
En la clase no vi ninguna data o método para colorear las celdas.
Saludos
Re: Filexls de Ramon Avendaño
Posted: Mon Mar 05, 2018 10:02 pm
by elmoiquique
y por ultimo las font, se le puede cambiar el color