DbGrid para Excel

Delphi

01/07/2010

Olá , gostaria da ajuda de vocês para Exportação de um Consulta do DbGrid para o Excel
já encontrei algumas rotinas que fazem isso porem todas necessitam ter o excel instalado na máquina
outro problema é que é passado o ClientDataSet e não realmente o Grid Visualizado então se contem campos que não estão sendo exibidos, na conversão para excel vai todo CDS ate as informações que não era necessario.
se alguem ja utilizou de outra maneira gostaria de apreender...
Timuio

Timuio

Curtidas 0

Melhor post

João Nascimento

João Nascimento

02/07/2010

procedure TForm1.ExportaExcel(Grid: TDBGrid; DataSet: TDataSet);var Linha, Coluna: Integer;var Planilha : Variant;var ValorCampo : String;begin
Planilha := CreateoleObject('Excel.Application');Planilha.WorkBooks.Add(1);Planilha.Caption := 'Exportando dados do dbGrid para o Excel';Planilha.Visible := True;Grid.DataSource.DataSet.First;for Linha := 0 to DataSet.RecordCount - 1 dobeginfor Coluna := 1 to Grid.Columns.Count dobeginif Grid.Columns.Items[Coluna - 1].Visible thenbeginValorCampo := dbgrPadrao.Columns.Grid.Fields[Coluna - 1].AsString;Planilha.Cells[Linha + 2, Coluna] := ValorCampo;end;    end;Grid.DataSource.DataSet.Next;end;for Coluna := 1 to Grid.Columns.Count dobeginif Grid.Columns.Items[Coluna - 1].Visible thenbeginValorCampo := Grid.Columns.Grid.Fields[Coluna - 1].DisplayLabel;Planilha.Cells[1, Coluna] := ValorCampo;end;   end;Planilha.Columns.Autofit;end;

 
GOSTEI 1

Mais Respostas

Timuio

Timuio

01/07/2010

Alguem poderia me ajudar a passar o grid como parametro e não o DataSet nesta função??porque preciso algo do tipo
if DBGrid.Columns.Items[I].Visible then  //recebe o valor;




procedure Form1.ExportaExcel( DataSet: TDataSet );  // procedure Form1.ExportaExcel( DbGrid: TDbGrid );var  Linha, Coluna: Integer;  Planilha : Variant;  ValorCampo : String;begin  Planilha := CreateoleObject('Excel.Application');  Planilha .WorkBooks.add(1);  Planilha.Caption := 'Exportando dados do dbGrid para o Excel';  Planilha.Visible := True;
  DataSet.First;  for Linha := 0 to DataSet.RecordCount - 1 do  begin    for Coluna := 1 to DataSet.FieldCount do    begin      ValorCampo := DataSet.Fields[Coluna - 1].AsString;      Planilha.Cells[Linha + 2, Coluna] := ValorCampo;    end;    DataSet.Next;  end;  for Coluna := 1 to DataSet.FieldCount do  begin    ValorCampo := DataSet.Fields[Coluna - 1].DisplayLabel;    Planilha.Cells[1, Coluna] := ValorCampo;  end;  Planilha.Columns.Autofit;end;

 
GOSTEI 0
POSTAR