Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Servers (https://www.clubdelphi.com/foros/forumdisplay.php?f=9)
-   -   Volcado a Excel de un TMemoField (https://www.clubdelphi.com/foros/showthread.php?t=41308)

kuan-yiu 12-03-2007 19:08:41

Volcado a Excel de un TMemoField
 
Hola a tod@s y gracias de antemano.

Tengo un problemilla con un campo de una consulta y el modo de pasarlo a una celda en Excel.
El procedimiento de volcado a excel ya lo tengo y funciona perfectamente, bueno, funcionaba, hasta que se ha hecho un pequeño cambio en una de las tablas de la BD (Oracle 9i).
Tengo un campo comentario que tengo que volcar en una celda Excel que se ha convertido en un varchar(1000), lo que implica que en Delphi deja de ser un TStringField para ser un TMemoField.
Los datos los obtengo a través de una simple TQuery y aquellos campos que uso en el volcado los incorporo por medio del "Add Fields..." de la propia consulta.

El campo ahora tiene varias líneas con retornos de carro y eso me impide pasarlo tal y como lo hacía antes:
Código Delphi [-]
        WorkSheet.cells[intRow,3].value:= qinformeCOMNT_PPTO.AsString;
Ya que de este modo me saca caracteres extraños cuando hay un retorno de carro.

¿Cómo paso un TMemoField que puede no tener datos o tener una única línea, o tener varios retornos de carro a una celda excel?

roman 12-03-2007 19:31:26

Prueba reemplazando los #13#10 por #10. Al menos probando con un Memo, me ha funcionado.

// Saludos

kuan-yiu 12-03-2007 19:57:16

Nunca he usado memos sin ser a través de componentes específicos, así que no tengo muy claro cómo se manejan.
Además me asusta que este proceso pueda ser costoso en tiempo, porque el procedimiento ya es suficientemente lento como para añadirle complejidad.

roman 12-03-2007 20:06:45

No me refiero a que uses un Memo, sino a que muy posiblemente suceda lo mismo con el MemoField. Al parecer Excel no acepta los cambios de línea #13#10 como cualquier editor multilínea, sino sólo el #10. Prueba entonces poniendo:

Código Delphi [-]
WorkSheet.cells[intRow,3].value:= StringReplace(qinformeCOMNT_PPTO.AsString, #13#10, #10, [rfReplaceAll]);

// Saludos

kuan-yiu 12-03-2007 20:12:41

Perdón, no te había entendido, jejeje...

Funciona perfectamente. Muchísimas gracias por tu ayuda.


La franja horaria es GMT +2. Ahora son las 17:24:09.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi