Fórum DbGrid para Excel #380446

01/07/2010

0

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

Responder

Post mais votado

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;

 

João Nascimento

João Nascimento
Responder

Gostei + 1

Mais Posts

02/07/2010

Timuio

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;

 
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar