Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Errores con Fechas en Excel (https://www.clubdelphi.com/foros/showthread.php?t=91211)

gdlrinfo 02-12-2016 22:33:30

Errores con Fechas en Excel
 
Estimados tengo una duda estoy usando un código el cual podre mas abajo para pasar Un dbgrid a un Excel el proceso lo hace genial y sin problemas lo único es que cuando pasa unas presentaciones me pone el numero de presentación en el medio es decir la forma normal seria 01/02/2016 y al pasarlo a Excel aparece 02/01/2016 el problema es que son presentaciones osea no fechas puede ser presentación 1 o 2 de cualquier mes y año por ejemplo 01/12/2016 , 02/12/2016, 01/11/2016 y asi sucesivamente pero de ninguna manera puede quedar la presentación donde va el mes si alguien sabe porque pasa esto estaría muy agradecido ya he probado de todo y nada dejo el código del programa.-

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
 var
  excel:Variant;
  fila,columna:Integer;
  Data : TDataSet;
  MyDataSet:TDataSet;

begin
  try
    excel:=CreateOleObject('Excel.Application');
  except
    ShowMessage('Excel no se pudo iniciar.');
    exit;
  end;
  excel.Visible:=true;

  Data:=DBGrid1.DataSource.DataSet;
  Data.First;
  fila:=1;
  columna:=1;
  excel.Workbooks.Add;

    //Poner los títulos
     {for columna := 0 to Reja.Columns.Count-1 do
     begin
     excel.Cells[fila,columna + 1].Value:=Reja.Columns[columna].FieldName;
     end;}

     //solamente hay 6 columnas pongo los nombres a mano
     excel.Cells[1, 1].Value:='Resumen Semanal de Pagos';
     excel.Cells[2, 1].Value:='Fecha';
     excel.Cells[2, 2].Value:='Obra Social';
     excel.Cells[2, 3].Value:='Presentación';
   //  Excel.AutoFormat(10,NULL,NULL,NULL,NULL,NULL,NULL);
     fila:=3;

   //Desengachar controles para agilizar
//   DmPal.DatPal.DisableControls;

   try
     while not(Data.eof) do
      begin

       for columna := 0 to DBGrid1.Columns.Count-1 do
       begin

        if columna < 4 then
        Excel.Cells[fila,columna + 1].Value:=Data.FieldByName(DBGrid1.Columns[Columna].FieldName).AsString;

        if columna > 3  then
        begin
        excel.Cells[fila,columna + 1].Value:=Data.FieldByName(DBGrid1.Columns[columna].FieldName).AsString;
        excel.Cells[fila,columna + 1].NumberFormat:= '0';
        end;

       end;
        Data.Next;
        fila:= fila + 1;
      end;
      //Ajustar columnas
        for columna:=1 to 11 do
        begin
        Excel.Columns[Columna].EntireColumn.AutoFit;
        end;

   Except
   ShowMessage('Atención, se produjo un error en la transmisión.');
   end;

   //DmPal.DatPal.EnableControls;
end;


Otra cosa que me interesaría saber como dar color y cambiar la fuente en las celdas de Excel .-

Atte. Gonzalo.-

fjcg02 03-12-2016 14:51:06

El problema de las fechas también me ocurre a mi.

La solución que he aplicado es en la misma consulta de origen poner las fechas en format carácter 'YYYY-MM-DD' . Excel hace lo que se le pone en la punta del puro, porque convierte los datos a formato fecha pero lo hace bien.
Cómo pasar las fechas a carácter dependerá de tu motor de base de datos. Te remito a la documentación del que uses.

Espero que te sirva de ayuda.

Un saludo

TOPX 05-12-2016 20:49:41

Estimado,
-


La franja horaria es GMT +2. Ahora son las 11:00:08.

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