Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Exportar el contenido de un DBGrid - DataGrid a Excel - Delphi
Lenguaje de programación Borland Delphi

Os mostramos un ejemplo sobre cómo exportar un TDBGrid, un DataGrid, un Grid de Delphi (rejilla de datos) automáticamente a una hoja de cálculo Microsoft Excel.


Os indicamos el código fuente completo de la función que utilizaremos para tal cometido y un ejemplo de uso.

Para realizarlo hemos utilizado un componente que incluye el propio Delphi, llamado "TExcelApplication". En el USES del formulario o unidad donde coloquemos la función necesitaremos una referencia a las siguientes unidades: Excel2000, db, DBGrids, variants

unit UnidadProcedimientos;

interface

uses Classes, registry, windows, IdGlobal, SysUtils, inifiles,
    forms, OleServer, Excel2000, db, DBGrids, variants;

var

...




procedure exportarGridExcel (mGrid : tdbgrid);
var
  rangoExcel : Excel2000.range;
  i, fila : integer;
  mMarcador : Tbookmarkstr;
  mTabla : tdataset;
  aplicacionExcel : TExcelApplication;
begin
  //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
          rangoExcel.Value := mTabla.Fields[i].AsString;
          rangoExcel := rangoExcel.Next;
        end;
        mTabla.Next;
        Inc(fila);
      end;
      finally
        mTabla.Bookmark := mMarcador;
      end;
    finally
      mTabla.EnableControls;
    end;
    //se podría formatear para dejar con mejor aspecto
    //rangoExcel:=aplicacionExcel.Range['A1','E'+inttostr(row-1)];
   //rangoExcel.AutoFormat(3,NULL,NULL,NULL,NULL,NULL,NULL);
 end;




Un ejemplo de uso, podría ser en el formulario donde se encuentre el dbgrid, en el evento OnClick de un botón que pongamos a tal efecto. Supondremos que el botón (TButton) se llama "btExportarGridExcel":
procedure TformMenuPrincipal.btExportarGridExcelClick (Sender: TObject);
begin
  exportarGridExcel (grid);
end;




Publicado el: 2004-08-30

Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A