Exportar campos MEMO a excel con TFileXLS

Post Reply
RSalazarU
Posts: 177
Joined: Wed Jul 16, 2008 12:59 pm
Location: Cochabamba-Bolivia
Contact:

Exportar campos MEMO a excel con TFileXLS

Post 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
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Re: Exportar campos MEMO a excel con TFileXLS

Post 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
Post Reply