CLASE REPEXCEL
-
- Posts: 44
- Joined: Fri Feb 03, 2006 6:42 pm
- Location: FORMOSA - ARGENTINA
CLASE REPEXCEL
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
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
-
- Posts: 44
- Joined: Fri Feb 03, 2006 6:42 pm
- Location: FORMOSA - ARGENTINA
Re: CLASE REPEXCEL
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
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
Re: CLASE REPEXCEL
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
RenOmaS
skype: americo.balboa
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: CLASE REPEXCEL
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.
¿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
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Re: CLASE REPEXCEL
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
RenOmaS
skype: americo.balboa
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: CLASE REPEXCEL
Gracias por contestar, Renomas. Intentaré modificar el method que indicas, y te aviso.
Saludos.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: CLASE REPEXCEL
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.
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
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: CLASE REPEXCEL
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.
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
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Re: CLASE REPEXCEL
Podes enviarme un ejemplo de como lo haces... e que version de fw utilizas?
Saludos/regards
RenOmaS
skype: americo.balboa
RenOmaS
skype: americo.balboa
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: CLASE REPEXCEL
Hola Renomas, te he enviado el ejemplo solicitado a: ducanlive@hotmail.com
Utilice la version 712.
Saludos
Utilice la version 712.
Saludos
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql