Ver Mensaje Individual
  #1  
Antiguo 02-12-2016
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Reputación: 18
gdlrinfo Va por buen camino
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.-
Responder Con Cita