tfilexls y texcel - SOLUCIONADO

tfilexls y texcel - SOLUCIONADO

Postby Armando Picon » Wed Sep 07, 2011 9: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
Last edited by Armando Picon on Fri Sep 16, 2011 12:45 am, edited 1 time in total.
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
User avatar
Armando Picon
 
Posts: 446
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Re: tfilexls y texcel

Postby ruben Dario » Wed Sep 07, 2011 10:43 pm

Saludos Le envio la clase FileXls

[url]
http://www.4shared.com/file/TDxywmf6/xlslib.html
[/url]
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
User avatar
ruben Dario
 
Posts: 1061
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Re: tfilexls y texcel

Postby Armando Picon » 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
User avatar
Armando Picon
 
Posts: 446
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Re: tfilexls y texcel

Postby Enrrique Vertiz » Thu Sep 08, 2011 12:07 am

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

viewtopic.php?f=6&t=18360&p=96313&hilit=creacion+excel#p96313
Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23.1026X, Fwh 23.04, MySQL 8.0.X, SQLLIB 1.9m, SQLRDD
Enrrique Vertiz
 
Posts: 514
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru

Re: tfilexls y texcel

Postby Armando Picon » Thu Sep 08, 2011 2: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
User avatar
Armando Picon
 
Posts: 446
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Re: tfilexls y texcel

Postby Enrrique Vertiz » Thu Sep 08, 2011 2: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 23.04, MySQL 8.0.X, SQLLIB 1.9m, SQLRDD
Enrrique Vertiz
 
Posts: 514
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru

Re: tfilexls y texcel

Postby Armando Picon » Thu Sep 08, 2011 4: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
User avatar
Armando Picon
 
Posts: 446
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Re: tfilexls y texcel

Postby ruben Dario » Thu Sep 08, 2011 1:46 pm

Te Envio Ejemplo, No te olvides de Incluir al inicio de tu preg el #include "FileXLS.ch"

Code: Select all  Expand view


  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
User avatar
ruben Dario
 
Posts: 1061
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Re: tfilexls y texcel

Postby Armando Picon » 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
User avatar
Armando Picon
 
Posts: 446
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Re: tfilexls y texcel - SOLUCIONADO

Postby MarioG » Fri Sep 16, 2011 1: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
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: tfilexls y texcel - SOLUCIONADO

Postby Armando Picon » Fri Sep 16, 2011 4: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
User avatar
Armando Picon
 
Posts: 446
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Re: tfilexls y texcel - SOLUCIONADO

Postby MarioG » Fri Sep 16, 2011 8: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
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: tfilexls y texcel - SOLUCIONADO

Postby Armando Picon » Sun Sep 18, 2011 3: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
User avatar
Armando Picon
 
Posts: 446
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Re: tfilexls y texcel - SOLUCIONADO

Postby MarioG » 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
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 90 guests