CLASE REPEXCEL

Post Reply
IVAN TRACHTA
Posts: 44
Joined: Fri Feb 03, 2006 6:42 pm
Location: FORMOSA - ARGENTINA

CLASE REPEXCEL

Post by IVAN TRACHTA »

Hola, utilizo la clase repexcel para poder exportar desde treport a planillas excel.
Funciona perfecto simpre que los listados sean desde un archivo, si está basado en un array me genera el listado pero sin los registros (o sea el excel sólo tiene la cabecera del reporte y los títulos de las columnas)
Otro problema que detecté es que si defino un PICTURE en el reporte me tira error acceso al array en la línea TSALXLS:NEW(99). De todos modos este error esta también en el listado basado en arrays por lo que no se si su origen es por este motivo o siempre que utilizo PICTURES.

Saludos
Iván
IVAN TRACHTA
Posts: 44
Joined: Fri Feb 03, 2006 6:42 pm
Location: FORMOSA - ARGENTINA

Re: CLASE REPEXCEL

Post by IVAN TRACHTA »

A nadie le ha ocurrido este problema?
Hay alguna otra clase para exportar a Excell desde el Preview?
Será que habrá que pasar el array a un archivo temporal y desde allí armar el listado?
Gracias y saludos
Iván
User avatar
RenOmaS
Posts: 205
Joined: Fri Oct 07, 2005 5:07 pm

Re: CLASE REPEXCEL

Post by RenOmaS »

Tienes que utilizar este bloque de codigo, antes del Activate del report.

Code: Select all

oRep:bPreInit := { || n:= 1 } 
//donde n es tu contador que recorre la matriz/array.
Saludos/regards
RenOmaS

skype: americo.balboa
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: CLASE REPEXCEL

Post by FranciscoA »

Hola Renomas.
¿Podrías indicarme cómo activar correctamente el oReport:CellView() en Repexcel?
Siempre he utilizado sin problemas tu librería REPEXCEL. Es excelente. Hasta hoy no había utilizado oReport:Cellview() en mis sistemas, pero un cliente me lo ha solicitado y no obedece. He revisado los prgs de la librería, pero francamente no encuentro donde meterle mano. ¿Hay alguien que lo haya hecho y pueda suministrarme un ejemplo?

He logrado que funcione parcialmente así:
IF oReport:lCreated
// oReport:lSeparator := .t.
//oReport:CellView()
oReport:lBoxOnTotal:=.t.
ENDIF

ACTIVATE REPORT oReport ;
ON CHANGE oReport:Separator()

Pero... me agrega una linea más, antes de cada total de Grupo, y es totalmente anti-estético.
Mucho agradeceré sus orientaciones.

Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh1204-MySql-TMySql
User avatar
RenOmaS
Posts: 205
Joined: Fri Oct 07, 2005 5:07 pm

Re: CLASE REPEXCEL

Post by RenOmaS »

Experimenta modificar el method saydata de tsalxls

Code: Select all

METHOD SayData( nCol, nLine ) CLASS TSalXLS

     LOCAL nFont, ;
           nFor, ;
           oCol := ::oRpt:aColumns[ nCol ], ;
           nAlignament:= ALING_NULL, ;
           uVal, ;
           nFormat := 0, ;
           nBorder := BORDER_NONE  //ADICIONADO !!


     IF nLine > len( oCol:aData)
        RETURN NIL
     ENDIF

     nFont := ::cFont( eval( oCol:bDataFont ) )

     If oCol:lGrid                      //ADICIONADO !!
         nBorder := BORDER_ALL //ADICIONADO !!
     EndIf                                 //ADICIONADO !!

     DO CASE
        CASE oCol:aPad[ nLine ] == RPT_LEFT
             nAlignament := ALING_LEFT

        CASE oCol:aPad[ nLine ] == RPT_RIGHT
             nAlignament := ALING_RIGHT

        CASE oCol:aPad[ nLine ] == RPT_CENTER
             nAlignament := ALING_CENTER
     ENDCASE

     uVal := Eval( oCol:aData[ nLine ] ) 

     IF !empty( oCol:aPicture[ nLine ] ) .or. valtype( uVal ) == 'D'  //Cuando es Fecha tambien env.
        nFormat := ::cFormat( oCol:aPicture[ nLine ], valtype( uVal ) )
     ENDIF

     @ ::nRow, nCol XLS SAY uVal OF ::oXLS ;
                              FORMAT nFormat ;
                              FONT nFont     ;
                              ALIGNAMENT nAlignament ;
                              BORDER nBorder   //ADICIONADO !!
     RETURN NIL
 
Saludos/regards
RenOmaS

skype: americo.balboa
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: CLASE REPEXCEL

Post by FranciscoA »

Gracias por contestar, Renomas. Intentaré modificar el method que indicas, y te aviso.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh1204-MySql-TMySql
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: CLASE REPEXCEL

Post by FranciscoA »

Renomas:
Lo he hecho así (no he logrado encontrar la solución modificando TSalxls):


IF oReport:lCreated
// oReport:lSeparator := .t.
//oReport:CellView()
// oReport:lBoxOnTotal:=.t.
ENDIF

ACTIVATE REPORT oReport ;
ON STARTGROUP ( oReport:NewLine(), EVAL(bSECCION) ) ; // ;
ON CHANGE oReport:Separator() ; //necesario cuando se usa RepExcel, para CellView
ON ENDGROUP oReport:BackLine(1) //necesario cuando se usa RepExcel, para CellView

No es lo mejor, pero se asemeja un poco más al Method CellView, cuando no se utiliza Repexcel.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh1204-MySql-TMySql
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: CLASE REPEXCEL

Post by FranciscoA »

Lo he mejorado así:
ACTIVATE REPORT oReport ;
ON STARTGROUP ( oReport:NewLine(),;
oReport:NewLine(),; //Por repexcel
EVAL(bSECCION),;
if(!oReport:lFirstRow,oReport:Separator,) ) ; //por repexcel
ON CHANGE oReport:Separator() ; //necesario cuando se usa RepExcel, para CellView
ON ENDGROUP oReport:BackLine(1) //necesario cuando se usa RepExcel, para CellView

Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh1204-MySql-TMySql
User avatar
RenOmaS
Posts: 205
Joined: Fri Oct 07, 2005 5:07 pm

Re: CLASE REPEXCEL

Post by RenOmaS »

Podes enviarme un ejemplo de como lo haces... e que version de fw utilizas?
Saludos/regards
RenOmaS

skype: americo.balboa
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: CLASE REPEXCEL

Post by FranciscoA »

Hola Renomas, te he enviado el ejemplo solicitado a: ducanlive@hotmail.com
Utilice la version 712.

Saludos
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh1204-MySql-TMySql
Post Reply