Por que es tan lenta la emisión a Excel con la Texcel nueva?
Por que es tan lenta la emisión a Excel con la Texcel nueva?
Estimados Amigos :
Ya logré exportar datos a Excel con la clase tecxels de Vikthor, pero me llama la atención el tiempo que demora en generarse la planilla,
lo hago de la siguiente manera:
oExcel := TExcelScript():New()
oExcel:Create( "nutrien.xls" )
oExcel:Visualizar(.t.)
Fil:=2
oExcel:Say( 1,2, "CODIGO" )
oExcel:Say( 1,3, "NOMBRE" )
use NUTRIEN
while NUTRIEN->(!eof())
oExcel:Say( Fil, 2, NUTRIEN->ALIMENTO )
oExcel:Say( Fil, 3, NUTRIEN->CALORIAS)
Fil++
NUTRIEN->(DBSKIP())
enddo
Esto hace que aparezca excel y se va generando uno a uno los registros.
En la Texcels para FW Clipper esto era rapidisimo.
GRACIAS DE ANTEMANO
SALUDOS
Ya logré exportar datos a Excel con la clase tecxels de Vikthor, pero me llama la atención el tiempo que demora en generarse la planilla,
lo hago de la siguiente manera:
oExcel := TExcelScript():New()
oExcel:Create( "nutrien.xls" )
oExcel:Visualizar(.t.)
Fil:=2
oExcel:Say( 1,2, "CODIGO" )
oExcel:Say( 1,3, "NOMBRE" )
use NUTRIEN
while NUTRIEN->(!eof())
oExcel:Say( Fil, 2, NUTRIEN->ALIMENTO )
oExcel:Say( Fil, 3, NUTRIEN->CALORIAS)
Fil++
NUTRIEN->(DBSKIP())
enddo
Esto hace que aparezca excel y se va generando uno a uno los registros.
En la Texcels para FW Clipper esto era rapidisimo.
GRACIAS DE ANTEMANO
SALUDOS
Luis Alfonso Fuentes Guerrero
FWH 2104 XHARBOUR BCC7
[email protected]
+56989003220
..Y de donde puedo bajar la clase TFolder, TButton y TButtonBmp de rossine?
GRACIAS AMIGOS
GRACIAS AMIGOS
Luis Alfonso Fuentes Guerrero
FWH 2104 XHARBOUR BCC7
[email protected]
+56989003220
Esa es precisamente la forma en la que no se debe de hacer la carga a la hoja de Excel.
Tienes de entrada 2 problemas:
1) La visualizaicon de la hoja alenta la comunicacion OLE, sugerencia, no visualices hasta que termines de cargar.
2) Nunca, nunca nunca, escribas directemente la celda, eso es tremendamente lento.
Lo que tienes que hacer es cargar los datos primero al portapapeles de Windows y luego mediatne OLE hacer el "paste" sobre Excel, y con eso puedes trabajar muchisimo mas rapido que escribiendo celda por celda.
Mira los ejemplos de ExcelScript y seguro encontraras el ejemplo que te menciono.
Tienes de entrada 2 problemas:
1) La visualizaicon de la hoja alenta la comunicacion OLE, sugerencia, no visualices hasta que termines de cargar.
2) Nunca, nunca nunca, escribas directemente la celda, eso es tremendamente lento.
Lo que tienes que hacer es cargar los datos primero al portapapeles de Windows y luego mediatne OLE hacer el "paste" sobre Excel, y con eso puedes trabajar muchisimo mas rapido que escribiendo celda por celda.
Mira los ejemplos de ExcelScript y seguro encontraras el ejemplo que te menciono.
Saludos
R.F.
R.F.
Perdon René ..
no se como hacer esto ,donde encuentro estos ejemplos?
DE ANTEMANO GRACIAS
no se como hacer esto ,donde encuentro estos ejemplos?
DE ANTEMANO GRACIAS
Luis Alfonso Fuentes Guerrero
FWH 2104 XHARBOUR BCC7
[email protected]
+56989003220
Te anexo un pequeño ejemplo:
Code: Select all | Expand
#include "FiveWin.ch"
FUNCTION MAIN()
DEFINE WINDOW oWnd
ACTIVATE WINDOW oWnd ON INIT Test()
RETURN
FUNCTION Test()
LOCAL oExcel, oFile
LOCAL cOrigen := cFilePath( GetModuleFileName( GetInstance() )) + "browse2.xls"
LOCAL i
cCadena:="Vikthor"+chr(9)+"[email protected]"+chr(13)
cText:= cCadena+cCadena+cCadena+cCadena+cCadena+cCadena+cCadena+cCadena+cCadena+cCadena
* cText:=""
aCajas:={ 10 , 20 , 30 , 40 , 50 ,60, 70 , 80 , 90 ,100 , 110 ,120 , 130 ,;
10 , 20 , 30 , 40 , 50 ,60, 70 , 80 , 90 ,100 , 110 ,120 , 130 ,;
10 , 20 , 30 , 40 , 50 ,60, 70 , 80 , 90 ,100 , 110 ,120 , 130 ,;
10 , 20 , 30 , 40 , 50 ,60, 70 , 80 , 90 ,100 , 110 ,120 , 130 ,;
10 , 20 , 30 , 40 , 50 ,60, 70 , 80 , 90 ,100 , 110 ,120 , 130 ,;
10 , 20 , 30 , 40 , 50 ,60, 70 , 80 , 90 ,100 , 110 ,120 , 130 ,;
10 , 20 , 30 , 40 , 50 ,60, 70 , 80 , 90 ,100 , 110 ,120 , 130 ,;
10 , 20 , 30 , 40 , 50 ,60, 70 , 80 , 90 ,100 , 110 ,120 , 130 ,;
10 , 20 , 30 , 40 , 50 ,60, 70 , 80 , 90 ,100 , 110 ,120 , 130 ,;
10 , 20 , 30 , 40 , 50 ,60, 70 , 80 , 90 ,100 , 110 ,120 , 130 ,;
10 , 20 , 30 , 40 , 50 ,60, 70 , 80 , 90 ,100 , 110 ,120 , 130 ,;
10 , 20 , 30 , 40 , 50 ,60, 70 , 80 , 90 ,100 , 110 ,120 , 130 }
aContenedor:={ 570 , 210 , 140 }
aMatriz:={}
nPos:=1
nCajas:=Len(aCajas)
DO WHILE nPos <= nCajas
aDatos:=array(6)
nCaja:=aCajas[nPos]
aDatos[1]:=Int( aContenedor[1] / nCaja)
aDatos[2]:=Int( aContenedor[2] / nCaja)
aDatos[3]:=Int( aContenedor[3] / nCaja)
aDatos[4]:=aDatos[1]*aDatos[2]*aDatos[3]
aDatos[5]:=nCaja^3
aDatos[6]:=aDatos[4]*aDatos[5]
nPos:=nPos+1
aadd( aMatriz , aDatos )
ENDDO
FOR i := 1 TO Len( aMatriz )
FOR j := 1 TO Len( aMatriz[i] )
xVret:=aMatriz[ i,j ]
xVret := IIF( ValType(xVret)=="D", DtoC(xVret),;
IIF( ValType(xVret)=="N", Str(xVret),xVret ) )
cText+=xVret+chr(9)
NEXT
cText+=Chr(13)
NEXT
oExcel := TExcelScript():New()
oExcel:Create( 'Temp.xls' )
oExcel:visualizar(.T.)
oClip:=TClipBoard():New()
oClip:Clear()
oClip:SetText( cText )
oExcel:SetPos('B5')
nCol:=cLetter2Column( 'B' )
oExcel:Paste()
oClip:End()
cRange:=cMakeRange( 5 , nCol, ( 5+oExcel:nRowsCount() ) - 1 , ( nCol+oExcel:nColsCount())-1 )
oRange := oExcel:oSheet:Range(cRange)
oRange:Font:Name := 'Tahoma'
oRange:Font:Size := 10
oRange:Font:Bold := .T.
oRange:Font:Color := rgb(0,0,150)
oRange:Interior:Color := rgb(192,192,192)
oRange:Borders():LineStyle := 1
oRange:Columns:AutoFit()
RETURN ( .T. )
Vikthor
Estimado Vikthor:
Al compilar el prg da los siguientes errores:
Error E2451 exel.c 97: Undefined symbol '__PRG_SOURCE__' in function hb_vm_SymbolInit_EXEL
Error E2193 exel.c 196: Too few parameters in call to 'hb_vmExecute' in function HB_FUN_MAIN
Error E2193 exel.c 751: Too few parameters in call to 'hb_vmExecute' in function HB_FUN_TEST
Podrias mandarme un ejemplo mas sencillo porfis?
GRACIAS DE ANTEMANO
Al compilar el prg da los siguientes errores:
Error E2451 exel.c 97: Undefined symbol '__PRG_SOURCE__' in function hb_vm_SymbolInit_EXEL
Error E2193 exel.c 196: Too few parameters in call to 'hb_vmExecute' in function HB_FUN_MAIN
Error E2193 exel.c 751: Too few parameters in call to 'hb_vmExecute' in function HB_FUN_TEST
Podrias mandarme un ejemplo mas sencillo porfis?
GRACIAS DE ANTEMANO
Luis Alfonso Fuentes Guerrero
FWH 2104 XHARBOUR BCC7
[email protected]
+56989003220
Error mio! la estaba compilando con harbour
la compile xon xharbour y funciona
GRACIAS VIKTHOR!
la compile xon xharbour y funciona
GRACIAS VIKTHOR!
Luis Alfonso Fuentes Guerrero
FWH 2104 XHARBOUR BCC7
[email protected]
+56989003220