O en su defecto, utiliza la clase FileXls para Xailer que adapté del
trabajo original de Ramon Avendaño.
Esta es la forma de hacerlo en Xailer:
> METHOD ExportaExcel CLASS LaQueSea
> LOCAL oFont1,oFont2,oFont3, oFormat1,nCiclo
> LOCAL nField, nCargo, nAbonos, x
>
> oFont1 := XLSFONT("ARIAL",10)
> oFont2 := XLSFONT("Courier new",10)
> oFont3 := XLSFONT("Courier new",10,.T.)
> oFormat1 := XLSFORMAT("#,##0.00")
>
> WITH OBJECT oXLS := TFileXls():New(cNomArchivo,,,.f.,.t.)
> :Say(1,1,NOMBRE_EMPRESA,,,oFont1)
> :Say(3,1,"Saldos del ejercicio: "+ALLTRIM(STR(EJERCICIO)),,,oFont1)
> (ALI_CATTOD)->(DBGOTOP())
> nCiclo := 5
> :_Col(1,1,20)
> :_Col(2,5,15)
> DO WHILE ! (ALI_CATTOD)->(EOF())
> :Say(nCiclo,1,(ALI_CATTOD)->cuenta+"-"+;
> (ALI_CATTOD)->subcuenta+"-"+;
> (ALI_CATTOD)->ssubcuenta+"-"+;
> (ALI_CATTOD)->auxiliar+" "+;
> (ALI_CATTOD)->Descripcio,,,oFont3)
> nCiclo++
> nField := 9
> nCargos := 0
> nAbonos := 0
> FOR x := 1 TO LEN(ARR_MESES)
> :Say(nCiclo,1,ARR_MESES[x],,,oFont2)
> :Say(nCiclo,2,(ALI_CATTOD)->(FIELDGET(nField));
> ,,,oFont2,oFormat1)
> nField ++
> :Say(nCiclo,3,(ALI_CATTOD)->(FIELDGET(nField));
> ,,,oFont2,oFormat1)
> nCargos += (ALI_CATTOD)->(FIELDGET(nField))
> nField++
> :Say(nCiclo,4,(ALI_CATTOD)->(FIELDGET(nField));
> ,,,oFont2,oFormat1)
> nAbonos += (ALI_CATTOD)->(FIELDGET(nField))
> nField++
> :Say(nCiclo,5,(ALI_CATTOD)->(FIELDGET(nField)),,,;
> oFont2,oFormat1)
> nCiclo++
> NEXT x
> :Say(nCiclo,3,nCargos,,,oFont3,oFormat1)
> :Say(nCiclo,4,nAbonos,,,oFont3,oFormat1)
> nCiclo += 2
> (ALI_CATTOD)->(DBSKIP())
> ENDDO
> :End()
> END WITH
> RETURN Nil
Saludos
Rene Flores
http://www.ciber-tec.com
Ramón Zea escribió:
> Estoy haciendo la exportacion a Excel, pero para barrer una base de datos de
> 9676 registro, tarda casi una hora, alguien ha hecho algo parecido y que le
> tarde menos? mucho menos?
>
> Estoy usando:
> oExcel := TOleAuto(:::::
> ::::
>
> y en un ciclo while !eof() :
> como tengo que correr los campos aplico un for:
> With Object oExcel:oAS:Cells( nRow, oCol[1] )
> :Value := Eval(oCol[2])
> :HorizontalAlignment := oCol[4]
> :Font:Size := oCol[3]
> :NumberFormat := oCol[5]
> If ( oCol[6] )
>
> End
> End With
>
> Me intriga tanta lentitud.
>
> Algunas sugerencias?
>
> Gracias.
--