Page 1 of 1

Color de celdas (filas y columnas) en la clase FILEXLS

Posted: Fri Feb 01, 2008 3:54 pm
by JmGarcia
Pues eso.
¿ Se puede dar color a una fila con la clase TFileXLS ?

Posted: Fri Feb 01, 2008 5:43 pm
by pymsoft
JmGarcia,


Prueba esto:


oHoja:Rows( "2:4" ):Interior:Color := RGB( 244, 249, 198)
oHoja:Cells( nRow, nCol ):Font:Bold := .T.
oHoja:Cells( nRow, nCol ):Font:Color := CLR_RED
oHoja:Rows(nRow):Interior:Color := CLR_HCYAN


Saludos

Posted: Mon Feb 04, 2008 3:31 pm
by JmGarcia
He probado todas las formas y en todas me da este error en ejecucion:
ARGUMENT ERROR

Posted: Mon Feb 04, 2008 3:44 pm
by pymsoft
JmGarcia,

Escribe parte del codigo de como lo haces...


Saludos

Posted: Mon Feb 04, 2008 4:51 pm
by JmGarcia

Code: Select all

#include "FiveWin.ch"
#include "FileXLS.ch"
function Main(cFicheroTXT)
local oFileXLS,cFichXLS:=cFicheroTXT+".xls",Indice:=0
XLS oFileXLS FILE &cFichXLS AUTOEXEC
Indice:=1
@ Indice, 1 XLS SAY "COMUN/CR-CO/CA-CO" OF oFileXLS
@ Indice, 2 XLS SAY "HORA"              OF oFileXLS
@ Indice, 3 XLS SAY "FECHADO"           OF oFileXLS
@ Indice, 4 XLS SAY "NUMERO"            OF oFileXLS
hFichero:=fopen(cFicheroTXT)
do while .not. feof(hFichero)
   cLinea:=freadline(hFichero)
   cTipo:=alltrim(right(cLinea,5))
   Indice:=Indice+1
   @ Indice, 1 XLS SAY cTipo OF oFileXLS
   @ Indice, 2 XLS SAY val(substr(cLinea,  1,8)) OF oFileXLS FORMAT "#######0"
   @ Indice, 3 XLS SAY val(substr(cLinea, 10,8)) OF oFileXLS FORMAT "#######0"
   @ Indice, 4 XLS SAY val(substr(cLinea, 19,4)) OF oFileXLS FORMAT "###0"
enddo
fclose(hFichero)
ENDXLS oFileXLS
return nil

Posted: Mon Feb 04, 2008 5:07 pm
by FiveWiDi
JmGarcia wrote:

Code: Select all

#include "FiveWin.ch"
#include "FileXLS.ch"
function Main(cFicheroTXT)
local oFileXLS,cFichXLS:=cFicheroTXT+".xls",Indice:=0
XLS oFileXLS FILE &cFichXLS AUTOEXEC
Indice:=1
@ Indice, 1 XLS SAY "COMUN/CR-CO/CA-CO" OF oFileXLS
@ Indice, 2 XLS SAY "HORA"              OF oFileXLS
@ Indice, 3 XLS SAY "FECHADO"           OF oFileXLS
@ Indice, 4 XLS SAY "NUMERO"            OF oFileXLS
hFichero:=fopen(cFicheroTXT)
do while .not. feof(hFichero)
   cLinea:=freadline(hFichero)
   cTipo:=alltrim(right(cLinea,5))
   Indice:=Indice+1
   @ Indice, 1 XLS SAY cTipo OF oFileXLS
   @ Indice, 2 XLS SAY val(substr(cLinea,  1,8)) OF oFileXLS FORMAT "#######0"
   @ Indice, 3 XLS SAY val(substr(cLinea, 10,8)) OF oFileXLS FORMAT "#######0"
   @ Indice, 4 XLS SAY val(substr(cLinea, 19,4)) OF oFileXLS FORMAT "###0"
enddo
fclose(hFichero)
ENDXLS oFileXLS
return nil
Con esta clase no puedes usar directamente FORMAT "###0", sino que primero debes declarar el formato que deseas usar:

#xcommand DEFINE XLS FORMAT <nFormat> ;
[ PICTURE <cPicture> ] ;
=> ;
<nFormat> := XLSFormat( <cPicture> )

DEFINE XLS FORMAT n4SinDecimales "###0"

y despues usar:

@ Indice, 4 XLS SAY val(substr(cLinea, 19,4)) OF oFileXLS FORMAT n4SinDecimales

siendo n4SinDecimales una variable numérica de tu función.

Saludos
Carlos G.

Posted: Mon Feb 04, 2008 5:24 pm
by JmGarcia
FiveWiDi wrote:Con esta clase no puedes usar directamente FORMAT "###0", sino que primero debes declarar el formato que deseas usar:

#xcommand DEFINE XLS FORMAT <nFormat> ;
[ PICTURE <cPicture> ] ;
=> ;
<nFormat> := XLSFormat( <cPicture> )

DEFINE XLS FORMAT n4SinDecimales "###0"

y despues usar:

@ Indice, 4 XLS SAY val(substr(cLinea, 19,4)) OF oFileXLS FORMAT n4SinDecimales

siendo n4SinDecimales una variable numérica de tu función.

Saludos
Carlos G.
Es que como tengo "tantos formatos" no me parecio conveniente usar variables y me funciona de esa forma que he puesto yo :oops:

Pero a parte de eso (que lo cambiare) ¿ como añado COLOR a las celdas ?

Posted: Tue Feb 05, 2008 9:50 am
by pymsoft
No uso esta clase, pero prueba asi:


oFileXLS:Get( "ActiveSheet" ):Rows( "2:4" ):Interior:Color := RGB( 244, 249, 198)


Saludos

Posted: Tue Feb 05, 2008 11:19 am
by FiveWiDi
JmGarcia wrote:
FiveWiDi wrote:Con esta clase no puedes usar directamente FORMAT "###0", sino que primero debes declarar el formato que deseas usar:

#xcommand DEFINE XLS FORMAT <nFormat> ;
[ PICTURE <cPicture> ] ;
=> ;
<nFormat> := XLSFormat( <cPicture> )

DEFINE XLS FORMAT n4SinDecimales "###0"

y despues usar:

@ Indice, 4 XLS SAY val(substr(cLinea, 19,4)) OF oFileXLS FORMAT n4SinDecimales

siendo n4SinDecimales una variable numérica de tu función.

Saludos
Carlos G.
Es que como tengo "tantos formatos" no me parecio conveniente usar variables y me funciona de esa forma que he puesto yo :oops:

Pero a parte de eso (que lo cambiare) ¿ como añado COLOR a las celdas ?
Creo que con esta clase no puedes dar color.
Si lo averiguas me lo dices, yo tengo el mismo problema y aunque evidentemente no es lo mismo, lo que hago es jugar con los tipos de letra y los marcos de las celdas.

Esta clase escribe un fichero en formato Excel ¿1.2? de manera que puedes usarla aunque no tenga ningún programa que pueda abrir el fichero.
Esto y que no abre/precisa Excel es quizás la única ventaja que le veo.

Además, hace poco descubrí que enviaba el fichero por mail y uno de los destinatarios tenía antivirus PANDA y lo identificaba como INFECTADO, evidentemente era un error del antivirus que ¿quizás no contemplaba formatos de ficheros tan antíguos?

Saludos
Carlos G.

Posted: Tue Feb 05, 2008 4:00 pm
by JmGarcia
pymsoft wrote:oFileXLS:Get( "ActiveSheet" ):Rows( "2:4" ):Interior:Color := RGB( 244, 249, 198)
Es lo que me imaginaba, pymsoft, lo usas con ActiveX.
En las maquinas que correra la utilidad que estoy haciendo NO tiene Office, de hay use TFileXLS.
El no tenen Office es porque solo se usan con programas de servicio y de control de procesos y unas cuantas licencias de Office valen una pasta.
FiveWiDi wrote:Creo que con esta clase no puedes dar color.
Pues mi pozo en un gozo...


P.D.: ¡¡¡ Ramón Avendaño !!! por favor, un poco de color a tu "clase".