FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour tfilexls y texcel - SOLUCIONADO
Posts: 446
Joined: Mon Dec 26, 2005 09:11 PM
tfilexls y texcel - SOLUCIONADO
Posted: Wed Sep 07, 2011 09:21 PM

Por vez primera debo exportar datos de un Browse (NO XBROWSE) a Excel. De acuerdo a los post antiguos aparentemente las librerias tFileXLS o tEXCEL son las adecuadas para exportar datos de DBF a XLS. Agradecer铆a mucho me indicaran donde ubicar estas librerias y, si es posible un ejemplo de codigo.

Gracias por adelantado

Armando

FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicaci贸n via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Posts: 1078
Joined: Thu Sep 27, 2007 03:47 PM
Re: tfilexls y texcel
Posted: Wed Sep 07, 2011 10:43 PM
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
Posts: 446
Joined: Mon Dec 26, 2005 09:11 PM
Re: tfilexls y texcel
Posted: Wed Sep 07, 2011 11:21 PM

Ruben Dar铆o

Gracias por la librer铆a. Voy a generarlo para la versi贸n de FWH que poseo. Mil gracias. Pregunta: 驴Tienes alg煤n codigo donde lo hayas aplicado?... para compartirlo en este foro?

FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicaci贸n via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Posts: 582
Joined: Fri Oct 07, 2005 02:17 PM
Re: tfilexls y texcel
Posted: Thu Sep 08, 2011 12:07 AM

Armando, aqui hay un post anterior donde hay ejemplos de FileXls y tExcelScript :

viewtopic.php?f=6t=18360p=96313hilit=creacion+excel#p96313

&&&

Enrrique Vertiz Pitta

Lima-Peru

xHb 1.23.1026X, Fwh 25.01, BCC74, MySQL 8.0.X, SQLLIB 1.9m
Posts: 446
Joined: Mon Dec 26, 2005 09:11 PM
Re: tfilexls y texcel
Posted: Thu Sep 08, 2011 02:20 AM

Enrique

驴TOleAuto pertenece a una clase de FWH o a una independiente? En las rutinas se especifica este objeto y entonces me salta la duda.

Armando

FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicaci贸n via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Posts: 582
Joined: Fri Oct 07, 2005 02:17 PM
Re: tfilexls y texcel
Posted: Thu Sep 08, 2011 02:42 AM

Amando hasta donde recuerdo TOle viene con (x)Harbour
El FileXls si es externo y hay que incluir los .PRG que lo componen en tu proyecto.

Enrrique Vertiz Pitta

Lima-Peru

xHb 1.23.1026X, Fwh 25.01, BCC74, MySQL 8.0.X, SQLLIB 1.9m
Posts: 446
Joined: Mon Dec 26, 2005 09:11 PM
Re: tfilexls y texcel
Posted: Thu Sep 08, 2011 04:13 AM

Ok Enrique
Voy a probar los ejemplos adaptados a lo que intento hacer.
armando

FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicaci贸n via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Posts: 1078
Joined: Thu Sep 27, 2007 03:47 PM
Re: tfilexls y texcel
Posted: Thu Sep 08, 2011 01:46 PM
Te Envio Ejemplo, No te olvides de Incluir al inicio de tu preg el #include "FileXLS.ch"

Code (fw): Select all Collapse
  Filexls := "test2.xls"
  DEFINE XLS FONT nFont1 NAME "Arial" HEIGHT 12 BOLD 
  DEFINE XLS FONT nFont2 NAME "Arial" 
  DEFINE XLS FORMAT nFormat1 PICTURE 'dd-mmm-yyyy' 
  DEFINE XLS FORMAT nFormat2 PICTURE '#,##0' 
  if memvar->x_xlsaut=1
    XLS oFileXLS FILE  &Filexls //AUTOEXEC //PROTECT  AUTOEXEC  NO AUTOEXEC  hace que se habra en automatico , no automatico
  else
    XLS oFileXLS FILE  &Filexls //AUTOEXEC // no se habre automaticamente
  endif

 XLS COL 1  WIDTH 15 OF oFileXLS 
 XLS COL 2  WIDTH 15 OF oFileXLS 


 @ 1,1  XLS SAY "Codigo"  FONT nfont2 OF oFileXLS //BORDER BORDER_UP   ALIGNAMENT ALING_CENTER ALIGNAMENT ALING_LEFT 
 @ 1,2  XLS SAY "Nombre"  FONT nfont2 OF oFileXLS //BORDER BORDER_DOWN ALIGNAMENT ALING_CENTER 
 nXlsLine:=3
 Do While .Not. if(aContl[20],oDbfxls:EOF(),EOF())
      @ nXlsLine,1  XLS SAY oDbfxls:Fields("tipmod"):Value OF oFileXLS 
      @ nXlsLine,2  XLS SAY oDbfxls:Fields("nombre"):Value OF oFileXLS  
      oDbfxls:MoveNext() 
      lin++
       //    oMeter:Set( lin ) //        oProg:nPosition += 1
      ::loMeter:Set( oDbfxls:AbsolutePosition )  //   oMeter:Set( oDbfxls:AbsolutePosition )
   nXlsLine++ 

 
EndDo 

 SET XLS TO DISPLAY ;
 OF oFileXLS 
 ENDXLS oFileXLS
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
Posts: 446
Joined: Mon Dec 26, 2005 09:11 PM
Re: tfilexls y texcel
Posted: Fri Sep 16, 2011 12:44 AM

:Gracias Dario y Enrique

Pude enviar los datos de una tabla directamente a Excel sin mucha complicacion gracias a TExcelScript. los "defectillos" son que los datos aparecen en la Hoja Electr贸nica de forma lenta. No he podido comprobar si se requiere tener instalado el MS-excel, pero como digo, son solamente cosas que no creo molesten mucho al cliente.

Esta es la rutina que escribi para este tema:

include "fivewin.ch"

  • Usando TEXCELSCRIPT
    FUNCTION Cierre2XLS(dFecha)
    Local cAlias := SELECT()
    LOCAL xlsFile := oApp:Pathwork + "\" + DTOS(dFecha)+".XLS" //donde voy a grabar el archivo excel
    Local oExcel
    Local nRow, nCol, N := 1
    Local aHeads := {}
    *
    Local nIMPORTE := 0 // VALOR FACTURA
    Local nPENDIENTE := 0 // PENDIENTE INICIA
    Local nACUENTA := 0 // PAGOS A CUENTA
    Local nSALDO := 0 // SALDOS
    *
    oExcel := TExcelScript():New()
    oExcel:create(xlsFile)
    oExcel:visualizar(.T.)
    *
  • Cabeceras de columna
    AADD( aHeads, "TIENDA") // NUMERO DE TIENDA
    AADD( aHeads, "OT No.") // NUMERO DE TRANSACCION - NUMERO OT
    AADD( aHeads, "CLIENTE") // ID DE CLIENTE
    AADD( aHeads, "SERVICIO") // TIPO DE SERV.
    AADD( aHeads, "IMPORTE") // VALOR FACTURA )
    AADD( aHeads, "PENDIENTE") // PENDIENTE INICIAL
    AADD( aHeads, "A CUENTA") // PAGOS A CUENTA
    AADD( aHeads, "SALDO") // SALDOS
    AADD( aHeads, "H.RECEP") // HORA DE RECEPCION
    AADD( aHeads, "F.ENTR.") // FECHA DE ENTREGA
    AADD( aHeads, "H.ENTR.") // HORA DE ENTREGA
    AADD( aHeads, "ENTR. EN") // ID DE ENTREGA=01->TIENDA / 02->DOMICILIO
  • oExcel:Say( 1, 1, "CIERRE DE OPERACIONES - "+DTOS(dFecha),"Tahoma", 25, .T.,,,,,)
    nRow := 2
    for n=1 to LEN(aHeads)
    oExcel:Say( nRow, N, aHeads[N],,,.T.,,,7,,)
    next N
    *
    oExcel:borders("A2:L2",nRow,N,1)
    nRow++
    DO WHILE ! EOF()
    *
    oExcel:Say( nRow, 1 , (cAlias)->NUMTIEND,,,,,,7,,)
    oExcel:Say( nRow, 2 , IIF( VALTYPE( (cAlias)->NUMTRANS)<>"C", ;
    TRANSFORM( (cAlias)->NUMTRANS, "999999"),(cAlias)->NUMTRANS),,,,,,7,,)
    oExcel:Say( nRow, 3 , (cAlias)->ID_CLIEN,,,,,,7,,)
    oExcel:Say( nRow, 4 , (cAlias)->ID_SERVI,,,,,,7,,)
    oExcel:Say( nRow, 5 , (cAlias)->VALFACTU,,,,,,7,,)
    oExcel:Say( nRow, 6 , (cAlias)->COB_PEND,,,,,,7,,)
    oExcel:Say( nRow, 7 , (cAlias)->COB_CNTA,,,,,,7,,)
    oExcel:Say( nRow, 8 , (cAlias)->COB_SALD,,,,,,7,,)
    oExcel:Say( nRow, 9 , (cAlias)->HR_RECEP,,,,,,7,,)
    oExcel:Say( nRow, 10, (cAlias)->FECENTRE,,,,,,7,,)
    oExcel:Say( nRow, 11, (cAlias)->HR_ENTRE,,,,,,7,,)
    oExcel:Say( nRow, 12, (cAlias)->ID_ENTRE,,,,,,7,,)
    *
    nIMPORTE += (cAlias)->VALFACTU // VALOR FACTURA
    nPENDIENTE += (cAlias)->COB_PEND // PENDIENTE
    nACUENTA += (cAlias)->COB_CNTA // PAGOS A CUENTA
    nSALDO += (cAlias)->COB_SALD // SALDOS
    *
    SKIP
    nRow++

ENDDO
*
oExcel:Say( nRow, 1 , "TOTALES",,12,.T.,,,7,,)
oExcel:Say( nRow, 5 , nIMPORTE,,,,,,7,,)
oExcel:Say( nRow, 6 , nPENDIENTE,,,,,,7,,)
oExcel:Say( nRow, 7 , nACUENTA,,,,,,7,,)
oExcel:Say( nRow, 8 , nSALDO,,,,,,7,,)
*
oExcel:Save()
*
RETURN

FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicaci贸n via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: tfilexls y texcel - SOLUCIONADO
Posted: Fri Sep 16, 2011 01:06 PM
Armando;
Uno de los motivos por loque deje TExcelScript fue porque no le encontr茅 la vuelta para que no sea lenta la composici贸n de la hoja.
TFileXLS, es bastante mas sencilla de usar, y con posibilidades de campos calculados. si las pretenciones no son muy profundas, para hojas sencillas la salida es practicamente inmediata.
Esta es la 煤ltima version que tengo: (con ejemplos)
http://www.box.net/shared/vkc2nu2yj70bit697ll8


Saludos
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 446
Joined: Mon Dec 26, 2005 09:11 PM
Re: tfilexls y texcel - SOLUCIONADO
Posted: Fri Sep 16, 2011 04:00 PM

Mario

Gracias por el aporte. Voy a probar el c贸digo que me alcanzas. Pregunta 驴requiere que se enlace el aporte de la clase OLE de Avenda帽o o no es necesario? (en alg煤n escrito, que le铆, indicaba que hacia uso de algo relacionado con OLE de Ram贸n Avenda帽o).

De acuerdo a los ejemplos que me env铆as, parece bien sencillo de aplicar. Voy a hacer las pruebas para ver si le alcanzo al cliente, una nueva versi贸n de su aplicaci贸n, con esta clase adentro.

Mil gracias. Te comentar茅 lo que sucede.

Un abrazo

Armando

FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicaci贸n via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: tfilexls y texcel - SOLUCIONADO
Posted: Fri Sep 16, 2011 08:21 PM

Armando;
No es necesario usar la clase OLE, al menos si compilas con xHarbour.
Si mal no recuerdo en alg煤n momento lei que era necesario si compilabas con Harbour
Asi es que, quizas, si alguien usa ambos compiladores podr谩 sacarnos la duda

Saludos

Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 446
Joined: Mon Dec 26, 2005 09:11 PM
Re: tfilexls y texcel - SOLUCIONADO
Posted: Sun Sep 18, 2011 03:37 PM

Mario

隆Pues s铆! La clase TfileXLS tambi茅n es simple de aplicar. Su principal carencia, muchas veces no necesaria (hasta que se encuentre con un cliente "colorido"), es el hecho que no tiene posibilidades de colorear las fuentes o el fondo de las celdas, con la excepci贸n de darle atributos de "sombra". Te agradezco mucho que me hayas proporcionado la clase.

Este es el codigo que he generado con tfileXLS


  • Exportar datos de la BD hacia una hoja Electronica de Excel *
  • A. Pic贸n S., Lima, Per煤 *
  • 18.09.2011 *
  • Uso de la Clase tfileXLS *
  • Gracias a la Colaboraci贸n de Mario G., Foro Fivetechsoft *

include "FileXLS.ch"

FUNCTION ExpCierreXLS(dFecha)
Local cAlias := SELECT()
LOCAL xlsFile := ""
Local aHeads := {}
Local nIMPORTE := 0 // VALOR FACTURA
Local nPENDIENTE := 0 // PENDIENTE
Local nACUENTA := 0 // PAGOS A CUENTA
Local nSALDO := 0 // SALDOS
* variables de la clase FileXLS
Local oFileXLS
local nFormat1
local nFont1, nFont2, nFont3, nFont4
* Variables para filas y columnas
Local nRow, nCol, N := 1
*
* Formato para numeros
DEFINE XLS FORMAT nFormat1 PICTURE '#,##0.00' // para importes
* Fuentes y tama帽os
DEFINE XLS FONT nFont1 NAME "Arial" HEIGHT 16 BOLD // titulo general
DEFINE XLS FONT nFont2 NAME "Arial" HEIGHT 12 BOLD // titulo de campos
DEFINE XLS FONT nFont3 NAME "Arial" HEIGHT 10 // Valores del contenido
* Titulo general
cTitulo := "CIERRE DE OPERACIONES - "+DTOS(dFecha)
* Cabeceras de columna
AADD( aHeads, "TIENDA") // NUMERO DE TIENDA
AADD( aHeads, "OT No.") // NUMERO DE TRANSACCION - NUMERO OT
AADD( aHeads, "CLIENTE") // ID DE CLIENTE
AADD( aHeads, "SERVICIO") // TIPO DE SERV.
AADD( aHeads, "IMPORTE") // VALOR FACTURA
AADD( aHeads, "PENDIENTE") //PENDIENTE INICIAL
AADD( aHeads, "A CUENTA") //PAGOS A CUENTA
AADD( aHeads, "SALDO") //SALDOS
AADD( aHeads, "H.RECEP") //HORA DE RECEPCION
AADD( aHeads, "F.ENTR.") //FECHA DE ENTREGA
AADD( aHeads, "H.ENTR.") //HORA DE ENTREGA
AADD( aHeads, "ENTR. EN") // ID DE ENTREGA=01->TIENDA / 02->DOMICILIO
*
* Nombre del archivo Excel a generarse
xlsFile := oApp:Pathwork + "\" + (cAlias)->NUMTIEND + DTOS(dFecha)+".XLS"
XLS oFileXLS FILE (xlsFile) AUTOEXEC
* Anchos de las columnas
XLS COL 1 WIDTH 1 OF oFileXLS // primera columna en blanco como margen
FOR N=1 TO LEN(aHeads)
XLS COL (N+1) WIDTH ((LEN(aHeads[N]) * 1.8 ) + 2 ) OF oFileXLS // 1.8 por el ancho de la fuente
// a utlizar (Font2)
NEXT
* Titulos
nRow := 2
@ nRow, 2 XLS SAY (cTitulo) FONT nfont1 OF oFileXLS
nRow += 2
N := 1
FOR N=1 TO LEN(aHeads)
@ nRow, (N+1) XLS SAY (aHeads[N]) FONT nfont2 ;
BORDER 120 ;
SHADED ;
ALIGNAMENT 2 ;
OF oFileXLS
NEXT N
nRow++
DO WHILE !EOF()
*
@ nRow, 2 XLS SAY (cAlias)->NUMTIEND FONT nfont3 ;
ALIGNAMENT 2 ;
OF oFileXLS
@ nRow, 3 XLS SAY (cAlias)->NUMTRANS FONT nfont3 ;
ALIGNAMENT 2 ;
OF oFileXLS
@ nRow, 4 XLS SAY (cAlias)->ID_CLIEN FONT nfont3 ;
ALIGNAMENT 2 ;
OF oFileXLS
@ nRow, 5 XLS SAY (cAlias)->ID_SERVI FONT nfont3 ;
ALIGNAMENT 2 ;
OF oFileXLS
@ nRow, 6 XLS SAY (cAlias)->VALFACTU FONT nfont3 ;
ALIGNAMENT 2 ;
OF oFileXLS
@ nRow, 7 XLS SAY (cAlias)->COB_PEND FONT nfont3 ;
ALIGNAMENT 2 ;
OF oFileXLS
@ nRow, 8 XLS SAY (cAlias)->COB_CNTA FONT nfont3 ;
ALIGNAMENT 2 ;
OF oFileXLS
@ nRow, 9 XLS SAY (cAlias)->COB_SALD FONT nfont3 ;
ALIGNAMENT 2 ;
OF oFileXLS
@ nRow, 10 XLS SAY (cAlias)->HR_RECEP FONT nfont3 ;
ALIGNAMENT 2 ;
OF oFileXLS
@ nRow, 11 XLS SAY (cAlias)->FECENTRE FONT nfont3 ;
ALIGNAMENT 2 ;
OF oFileXLS
@ nRow, 12 XLS SAY (cAlias)->HR_ENTRE FONT nfont3 ;
ALIGNAMENT 2 ;
OF oFileXLS
@ nRow, 13 XLS SAY (cAlias)->ID_ENTRE FONT nfont3 ;
ALIGNAMENT 2 ;
OF oFileXLS
*
nIMPORTE += (cAlias)->VALFACTU // TOTAL IMPORTES FACTURA
nPENDIENTE += (cAlias)->COB_PEND // TOTAL PENDIENTES X POR COBRAR
nACUENTA += (cAlias)->COB_CNTA // TOTAL PAGOS A CUENTA RECIBIDOS
nSALDO += (cAlias)->COB_SALD // SALDOS X COBRAR
*
SKIP
nRow++
N := 2
ENDDO
@ nRow, 2 XLS SAY "TOTALES" FONT nfont2 ;
ALIGNAMENT 2 ;
SHADED ;
OF oFileXLS
* Say en blanco, solo para poder "sombrear" la columna
@ nRow, 3 XLS SAY "" FONT nfont2 ;
SHADED ;
OF oFileXLS
@ nRow, 4 XLS SAY "" FONT nfont2 ;
SHADED ;
OF oFileXLS
@ nRow, 5 XLS SAY "" FONT nfont2 ;
SHADED ;
OF oFileXLS
*
@ nRow, 6 XLS SAY (nIMPORTE) FONT nfont2 ;
ALIGNAMENT 2 ;
SHADED ;
OF oFileXLS
@ nRow, 7 XLS SAY (nPENDIENTE) FONT nfont2 ;
ALIGNAMENT 2 ;
SHADED ;
OF oFileXLS
@ nRow, 8 XLS SAY (nACUENTA) FONT nfont2 ;
ALIGNAMENT 2 ;
SHADED ;
OF oFileXLS
@ nRow, 9 XLS SAY (nSALDO) FONT nfont2 ;
ALIGNAMENT 2 ;
SHADED ;
OF oFileXLS
* Say en blanco, solo para poder "sombrear" la columna
@ nRow, 10 XLS SAY "" FONT nfont2 ;
SHADED ;
OF oFileXLS
@ nRow, 11 XLS SAY "" FONT nfont2 ;
SHADED ;
OF oFileXLS
@ nRow, 12 XLS SAY "" FONT nfont2 ;
SHADED ;
OF oFileXLS
@ nRow, 13 XLS SAY "" FONT nfont2 ;
SHADED ;
OF oFileXLS
*
XLS PAGE BREAK AT nRow OF oFileXLS
*
SET XLS TO DISPLAY ;
NOGRIDLINES ;
OF oFileXLS
*
ENDXLS oFileXLS

RETURN NIL

FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicaci贸n via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: tfilexls y texcel - SOLUCIONADO
Posted: Mon Sep 19, 2011 12:31 PM

Me alegra que te sea util
Como siempre, lo que se puede con uno, no lo tiene el otro y visceversa :D

Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina

Continue the discussion