Error al grabar formulas con FileXLS con + de 16000 lineas

Error al grabar formulas con FileXLS con + de 16000 lineas

Postby Enrrique Vertiz » Mon May 25, 2015 3:49 am

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.1026X, Fwh 24.02, MySQL 8.0.X, SQLLIB 1.9m
Enrrique Vertiz
 
Posts: 519
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru

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

Postby arturo tamayo » Wed May 27, 2015 2:23 am

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
arturo tamayo
 
Posts: 36
Joined: Fri Jan 02, 2009 3:12 pm

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

Postby Enrrique Vertiz » Wed May 27, 2015 2:31 am

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 los casos, 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.1026X, Fwh 24.02, MySQL 8.0.X, SQLLIB 1.9m
Enrrique Vertiz
 
Posts: 519
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 44 guests