Page 1 of 1

Error al grabar formulas con FileXLS con + de 16000 lineas

Posted: Mon May 25, 2015 3:49 am
by Enrrique Vertiz
Saludos Estimados

Quizas alguien ya paso por esto, cuando genero un Excel con FileXls y este tiene una serie de formulas, estas se guardan bien, hasta la linea 161XX (dieciseismil, ciento y algo) pero la siguiente sumatoria que es en la linea 16930 la formula esta mal gravada por la clase, explico con ejemplo

Ultima linea de formulas bien gravada en el Excel

Esto en la Columna 12 y en la Linea 16208 (L = 12 en Excel), esta formula esta OK, y todas las anteriores tambien (como 60 quiebres)

=SUMA(L15724:L16207)

Pero en la siguiente formula, la clase grava en el Excel esto :

=SUMA(L$549:$L16210)

Le aumenta el signo de $ a la formula y altera el valor, el 549 no es para nada el inicio, es el 16210 y el final es 16933
Estoy recontra seguro que los valores pasados por referencia a la clase estan Ok pues revise las variables al momento de invocar la funcion :

@ nCtl,12 XLS FORMULA _sum(nCtc,12, nCta-1,12) FORMAT nFon BORDER OF oFileXLS

Y el Metodo Formula de la Clase FileXls recibe bien los valores, lo verifique, esta al momento de grabar la formula por parte de la clase, pero no tengo ni idea donde, alguna idea ??
GRACIAS

//----------------------------------------------------------------------------//
METHOD Formula( nRow, nCol, nNumber, lRecalc, cFormula, ;
lHidden, lLocked, nFont, nFormat, lShaded, ;
nBorder, nAlignament ) CLASS TFileXLS

local cExpression := GetExpression( cFormula )
local nLen := Len( cExpression )

DEFAULT nNumber := 0, lRecalc := .t.

DEFAULT lHidden := .f., lLocked := .f., nFont := 0, nFormat := 0, lShaded := .f., ;
nBorder := BORDER_NONE, nAlignament := ALING_NULL

FWrite( ::hFile, Chr( 06 ) + Chr( 00 ), 2 )
FWrite( ::hFile, I2Bin( 17 + nLen ), 2 )

::PutCoors( nRow, nCol )
::PutAttributes( lHidden, lLocked, nFont, nFormat, lShaded, ;
nBorder, nAlignament )

FWrite( ::hFile, D2Bin( nNumber ), 8 )

FWrite( ::hFile, Chr( if( lRecalc, 2, 0 ) ), 1 )

FWrite( ::hFile, Chr( nLen ), 1 )
FWrite( ::hFile, cExpression, nLen )

return nil

Re: Error al grabar formulas con FileXLS con + de 16000 lineas

Posted: Wed May 27, 2015 2:23 am
by arturo tamayo
No es posible construir hojas mas grandes, ya que existe un limite en el archivo al escribir, por lo que tienes que controlar, si mal no recuerdo todo se casca a los a ´partir de la linesa 1800 y tantos. esto ocurre cuando estas usando formulas

como texto no se me ha presentado ningun problema

te recomiento que uses otro metodo para escribir en XLSx

Re: Error al grabar formulas con FileXLS con + de 16000 lineas

Posted: Wed May 27, 2015 2:31 am
by Enrrique Vertiz
Saludos Augusto

Gracias por contestar, si es solo con las formulas, en texto directo, llega hasta las 64,500 lineas que son la limitacion propia del .XLS
Se rompe a partir de la linea 16,000 y algo, pero me parece que si fuera una limitacion al escribir, deberia ser en todos _, no solo en las formulas ..., la solucion por el momento es grabar el resultado, ya no la formula a partir de esa linea.