Error al grabar formulas con FileXLS con + de 16000 lineas

Post Reply
Enrrique Vertiz
Posts: 440
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru
Contact:

Error al grabar formulas con FileXLS con + de 16000 lineas

Post 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
Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23, Fwh 20.04, MySQL 5.7 - 8.0, SQLLIB 1.9m, SQLRDD
arturo tamayo
Posts: 26
Joined: Fri Jan 02, 2009 3:12 pm

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

Post 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
Enrrique Vertiz
Posts: 440
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru
Contact:

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

Post 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.
Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23, Fwh 20.04, MySQL 5.7 - 8.0, SQLLIB 1.9m, SQLRDD
Post Reply