Consulta sobre la clase TExcel
Posted: Thu Apr 27, 2006 5:02 pm
Estoy teniendo problemas para generar una función paramétrica que genere planillas con la clase TExcels, la razón naturalmente no es un bug de la clase sino falta de ingenio.
Utilizo un array que contiene un block de código con los datos que deben colocarse en cada celda, cuando cargo la celda, si es una fórmula de excel no me funciona el block de código, creo porque no es una expresión válida para el block.
Alguien me puede sugerir como resolverlo?
Aqui va el código:
..........
aTitulo[1]:="KGS.PIE"
aTitulo[2]:="PROM."
aDato[1]:={||LINCVH->PESO}
aDato[2]:={||+( _CELL(nRow,19)/_CELL( nRow, 18) )}
aAlign[1]:=3
aAlign[2]:=3
aAncho[1]:=13
aAncho[2]:=10
aPicture[1]:="#,##0"
aPicture[2]:="#,##0"
aFormula[1]:=.F.
aFormula[2]:=.T.
aTotal[1]:=.T.
aTotal[2]:=.T.
FOR i= 1 to len(aDato)
DEFINE XLS FORMAT aFormat PICTURE aPicture
NEXT
//Creo objeto XLS
XLS oXLS FILE &cNomFile AUTOEXEC
//establezco ancho de columnas
FOR i=1 TO len(aDato)
XLS COL i WIDTH aAncho OF oXLS
NEXT
//Escribo titulos en la primera Fila
nRow=1
FOR i = 1 to LEN(aDato)
@ nRow, i XLS SAY aTitulo FONT aFnt[2] SHADED;
BORDER 64 ALIGNAMENT 2 OF oXLS
NEXT
GO TOP
DO WHILE !Eof()
nRow++
FOR i to len(aDato)
IF !aFormula
@ nRow, i XLS SAY EVAL(aDato) FONT aFnt[3] FORMAT ;
aFormat ALIGNAMENT aAlign OF oXls
ELSE
// aca da error
@ nRow, 20 XLS FORMULA aDato FONT aFnt[3] FORMAT ;
aFormat[20] ALIGNAMENT aAlign[20] OF oXls
ENDIF
NEXT
SKIP
ENDDO
nRow++
FOR I=1 TO len(aDato) //Pongo los totales
@ nRow, i XLS FORMULA _SUM(2,i,nRow,i) FONT aFnt[2] FORMAT ;
aFormat ALIGNAMENT 3 BORDER 32 OF oXLS
NEXT
ENDXLS oXLS //Fin de la XLS
.......
Utilizo un array que contiene un block de código con los datos que deben colocarse en cada celda, cuando cargo la celda, si es una fórmula de excel no me funciona el block de código, creo porque no es una expresión válida para el block.
Alguien me puede sugerir como resolverlo?
Aqui va el código:
..........
aTitulo[1]:="KGS.PIE"
aTitulo[2]:="PROM."
aDato[1]:={||LINCVH->PESO}
aDato[2]:={||+( _CELL(nRow,19)/_CELL( nRow, 18) )}
aAlign[1]:=3
aAlign[2]:=3
aAncho[1]:=13
aAncho[2]:=10
aPicture[1]:="#,##0"
aPicture[2]:="#,##0"
aFormula[1]:=.F.
aFormula[2]:=.T.
aTotal[1]:=.T.
aTotal[2]:=.T.
FOR i= 1 to len(aDato)
DEFINE XLS FORMAT aFormat PICTURE aPicture
NEXT
//Creo objeto XLS
XLS oXLS FILE &cNomFile AUTOEXEC
//establezco ancho de columnas
FOR i=1 TO len(aDato)
XLS COL i WIDTH aAncho OF oXLS
NEXT
//Escribo titulos en la primera Fila
nRow=1
FOR i = 1 to LEN(aDato)
@ nRow, i XLS SAY aTitulo FONT aFnt[2] SHADED;
BORDER 64 ALIGNAMENT 2 OF oXLS
NEXT
GO TOP
DO WHILE !Eof()
nRow++
FOR i to len(aDato)
IF !aFormula
@ nRow, i XLS SAY EVAL(aDato) FONT aFnt[3] FORMAT ;
aFormat ALIGNAMENT aAlign OF oXls
ELSE
// aca da error
@ nRow, 20 XLS FORMULA aDato FONT aFnt[3] FORMAT ;
aFormat[20] ALIGNAMENT aAlign[20] OF oXls
ENDIF
NEXT
SKIP
ENDDO
nRow++
FOR I=1 TO len(aDato) //Pongo los totales
@ nRow, i XLS FORMULA _SUM(2,i,nRow,i) FONT aFnt[2] FORMAT ;
aFormat ALIGNAMENT 3 BORDER 32 OF oXLS
NEXT
ENDXLS oXLS //Fin de la XLS
.......