Page 1 of 1

Exportar campos MEMO a excel con TFileXLS

Posted: Fri Feb 14, 2020 4:18 pm
by RSalazarU
Amigos del foro:

Utilizo la clase TFileXLS para generar archivos excel. todo OK

Ahora al generar un archivo con campos memo, el archivo generado no puede ser reconocido por EXCEL.

El problema esta en el metodo String() de la clase

Code: Select all

METHOD String( nRow, nCol, cString, ;
               lHidden, lLocked, nFont, nFormat, lShaded, ;
               nBorder, nAlignament ) CLASS TFileXLS

  local nLen := Len( cString )

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

  FWrite( ::hFile, Chr( 04 ) + Chr( 00 ), 2 )
  FWrite( ::hFile, I2Bin( 08 + nLen ), 2 ) //<- Aca coloca la longitud del texto 

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

  FWrite( ::hFile, Chr( nLen ), 1 ) //<- Aca coloca la longitud del texto con CHR() y si es de mas de 256 CHR() Falla
  FWrite( ::hFile, cString, nLen )

return nil
Al parecer solo puede procesar texto de menos de 255 caracteres por que usa la funcion CHR(??) para especificar la longitud del STRING ( CHR(300) Falla )

Alguien me puede dar una mano para mejorar el codigo.

De antemano muchas gracias

Rolando
Cochabamba, Bolivia

Re: Exportar campos MEMO a excel con TFileXLS

Posted: Fri Feb 14, 2020 5:29 pm
by Enrico Maria Giordano
CHR( 44 ) + CHR( 1 ) = 44 + 1 * 256 = 300 (little endian)

or

CHR( 1 ) + CHR( 44 ) = 1 * 256 + 44 = 300 (big endian)

EMG