Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Servers (https://www.clubdelphi.com/foros/forumdisplay.php?f=9)
-   -   Problema con Fechas en Exportacion Excel (https://www.clubdelphi.com/foros/showthread.php?t=57701)

grotero76 25-06-2008 12:43:01

Problema con Fechas en Exportacion Excel
 
Hola a todos,

tengo un problema con las fechas al realizar una exportación de datos de una rejilla a una hoja Excel. La carga de datos en el Excel la hago de la siguiente forma:

Código:

var
  Excel, WorkBook, WorkSheet: Variant;
  i,j:Integer;
  Filename:String;
  WBk, WS: OleVariant;
  columna:Integer;

begin
    for i := 1 to grid1.RowCount - 1 do     
        for j := 0 to grid1.ColCount - 1 do
        begin 
          columna:=columna+1;

          //Cargo el String que hay en el grid en la celda correspondiente
          WorkSheet.Cells[i + 1, columna] := grid1.Cells[j, i];
        end;

    WorkBook.SaveAs(Filename);

    Excel := GetActiveOleObject('Excel.Application');
    Excel.Visible:=True;
    WBk := Excel.WorkBooks.Open(Filename);
    WS := WBk.Worksheets.Item['Listado exportado'];
    WS.Activate;

end;


El problema viene en la línea:
WorkSheet.Cells[i + 1, columna] := g_infras.Cells[j, i];

Si por ejemplo el valor de grid1.Cells[j,i] es '06/02/2008' (formato dd/mm/yyyy) el valor que me inserta en Excel es '02/06/2008', es decir, le da la vuelta al mes y al día y lo pone en el formato mm/dd/yyyy. De alguna forma interpreta que el String que le paso es una fecha y le aplica un formato para escribirlo en la hoja Excel

La única solución que he encontrado de momento es no pasarle '06/02/2008' sino pasarle '06\02\2008', es decir, parece que con las barras invertidas no lo interpreta como una fecha y deja el String como está.

¿Alguien sabe por qué ocurre esto y cómo se puede solucionar?

Un saludo y muchas gracias.

poliburro 25-06-2008 14:28:29

Cita:

Empezado por grotero76 (Mensaje 295984)

La única solución que he encontrado de momento es no pasarle '06/02/2008' sino pasarle '06\02\2008', es decir, parece que con las barras invertidas no lo interpreta como una fecha y deja el String como está.

¿Alguien sabe por qué ocurre esto y cómo se puede solucionar?

Un saludo y muchas gracias.


tiene que ver con el autoformato de excel y lo más sencillo para solucionarlo es agregar una comilla simple antes de la fecha, de esa manera al leer excel el valor lo tomará como texto y no como un valor date. Saludos.

coso 25-06-2008 14:30:27

Hola,

debes tener en cuenta que una fecha en excel no es mas que un entero con el correspondiente formato. Me da la impresión que si, que excel te esta entendiendo 06/07/08 como 6 dividido entre 7 dividido entre 8.

grotero76 26-06-2008 07:34:44

Hola, gracias por las respuestas

al final lo he "solucionado" añadiendo antes de la fecha un espacio en blanco, de manera que en la hoja Excel aunque se inserte en la celda correspondiente la fecha con este espacio, dicho espacio en blanco no se percibe.

Un saludo y muchas gracias.

sépoco 28-07-2008 20:35:06

Problema con Fechas en Exportacion Excel
 
Debes poner #39+fecha.
En Excel queda como Tipo de Campo General.
Pero aparece como corresponde.


La franja horaria es GMT +2. Ahora son las 00:31:02.

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