Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ”ajustar texto” a las celda de excel una vez exportado (https://www.clubdelphi.com/foros/showthread.php?t=68263)

ingabraham 03-06-2010 23:07:48

”ajustar texto” a las celda de excel una vez exportado
 
Hola,
Necestito lo sgte:
1. necesito ”ajustar texto” a las celda de excel una vez exportado.
Debido a q exporto datos con mucha logitud de texto y me sale muy feo en excel.

2. que me muestre una vez exportado el archivo excel, que se anteponga sobre los demas archivos y me lo muestre, debido a que me lo deja en la barra de tarea.


Este es mi codigo de exportaciòn, funciona tdo bien.
Código Delphi [-]

//..............................................................................
//    EXPORTAR UN DBGRID A EXCEL
//..............................................................................
procedure TPrincipal.exportarGridExcel (mGrid : tdbgrid; lab:Tlabel);
var
  rangoExcel : VARIANT; // REEMPLAZO POR DELPHI7 TIPO. Excel2000.range;
  i, fila : integer;
  mMarcador : Tbookmarkstr;
  mTabla : tdataset;
  aplicacionExcel : TExcelApplication;
begin
Try
    Screen.Cursor := crHourGlass;
    Tlabel(Lab).Font.Color:=clRed;
    Tlabel(Lab).Font.Name:='Georgia';
  //creamos libro excel (abriendo Excel)
  aplicacionExcel := TExcelApplication.Create(nil);
  //asociamos el dataset (tabla) del DBGrid con la tabla
  //que utilizaremos en esta función
  mTabla := mGrid.datasource.dataset;
  //mostramos Excel
  //aplicacionExcel.Visible[0] := true;
  //creamos un nuevo libro de Excel
  aplicacionExcel.workbooks.add(NULL, 0);
  //primera fila con los nombres de las columnas
  //para ello recorremos todos las columnas de la tabla
  //y mostramos en Excel el valor de "DisplayLabel"
  rangoExcel := aplicacionExcel.ActiveCell;
  for i:= 0 to mTabla.Fields.Count - 1 do
  begin
    rangoExcel.Value := mTabla.Fields[i].DisplayLabel;
    rangoExcel := rangoExcel.Next;
  end;
  //aplicamos un autoformato de Excel a las filas y columnas añadidas
  rangoExcel.AutoFormat(10, NULL, NULL, NULL, NULL, NULL, NULL);
  mTabla.DisableControls;
  try
    mMarcador := mTabla.Bookmark;
    try
      //recorremos todos los registros de la tabla para ir añadiéndolos
      //a la hoja actual de Excel
      mTabla.First;
      fila := 2;
      while not mTabla.Eof do
      begin
        rangoExcel := aplicacionExcel.Range['A' + inttostr(fila), 'A' + inttostr(fila)];
        //recorremos todos las columnas del registro actual
        for i := 0 to mTabla.Fields.Count - 1 do
        begin
         If ( (mTabla.Fields[i].DisplayLabel='P_FECHA')or (mTabla.Fields[i].DisplayLabel='FECHA')or (mTabla.Fields[i].DisplayLabel='E_FECHAINGRESO')) then
           rangoExcel.Value := mTabla.Fields[i].AsDateTime
          else
           If ((mTabla.Fields[i].DisplayLabel='FECHA_RETIRO')And (Not(mTabla.Fields[i].IsNull)) ) Then
              rangoExcel.Value := mTabla.Fields[i].AsDateTime
           Else
            rangoExcel.Value := mTabla.Fields[i].AsString;
          rangoExcel := rangoExcel.Next;
        end;
        mTabla.Next;
        Inc(fila);
        Tlabel(Lab).Caption:='Exportando... Fila Nro.'+IntToStr(Fila);
      end;
      finally
        mTabla.Bookmark := mMarcador;
      end;
    finally
      mTabla.EnableControls;
    end;
     Tlabel(Lab).Font.Color:=clNavy;
     Tlabel(Lab).Caption:='Exportación Terminada!.';
         Screen.Cursor := crDefault;
    //mostramos Excel
   aplicacionExcel.Visible[0] := true;

   aplicacionExcel.Disconnect;
except
 on exception do
 begin
    //aplicacionExcel.Disconnect;     // comentariado debido a error de inicialización, realizar seguimiento.
    aplicacionExcel.Quit;
    messagedlg(' la exportación de datos, Esta Terminando su Proceso.',mterror,[mbok],0);
  end;
end;
end;

Neftali [Germán.Estévez] 04-06-2010 11:16:01

Pues ya lo tienes casi hecho.
En mi caso, el ejemplo que comentas, ya aparece abierto y sobre el resto de ventanas. Uso XP y D6.

En cuanto al ancho de columnas, como prueba, antes del TRY puedes colocar este código:

Código Delphi [-]
  // Anchos de columna
  rangoExcel := aplicacionExcel.Range['A1','A20'];
  rangoExcel.ColumnWidth := 5;
  rangoExcel := aplicacionExcel.Range['B1','B20'];
  rangoExcel.ColumnWidth := 10;
  rangoExcel := aplicacionExcel.Range['C1','C20'];
  rangoExcel.ColumnWidth := 15;
  rangoExcel := aplicacionExcel.Range['D1','D20'];
  rangoExcel.ColumnWidth := 20;
  rangoExcel := aplicacionExcel.Range['E1','E20'];
  rangoExcel.ColumnWidth := 25;
  rangoExcel := aplicacionExcel.Range['F1','F20'];
  rangoExcel.ColumnWidth := 40;

En fçacil, ahora puedes adaptarlo y colocarlo donde necesites.

Rowerto 15-12-2010 18:16:16

No se si se refiere a esto pero:

- Para que solo se vea cuando acabes de hacer todo:
Código Delphi [-]
      
      coinitialize(nil);
      Excel         := CreateOleObject('Excel.Application');
      ExcelDoc      := Excel.Workbooks.Add;
      WS            := ExcelDoc.ActiveSheet;
      Excel.Visible := false;

  // aqui el procedimiento que quieras

      Excel.Visible := true;

- Para que se ajusten los tamaños de las celdas:
Código Delphi [-]
ws.cells.entirecolumn.autofit;


La franja horaria es GMT +2. Ahora son las 04:21:26.

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