Fórum Exportar dados de um dbgrid para o excel #515388
31/03/2015
0
Bom Dia, estou com um problema para exportar, os dados do DBgrid para o excel.
Mesmo filtrando a DBGrid, quando exporto ele vem todos os dados da tabela.
Alguém poderia me informar como proceder, segue o código de exportação.
Mesmo filtrando a DBGrid, quando exporto ele vem todos os dados da tabela.
Alguém poderia me informar como proceder, segue o código de exportação.
procedure TFormrelcorreio.BitBtn2Click(Sender: TObject);
Var
linha, coluna: integer;
planilha: variant;
valorCampo: string;
begin
planilha:= CreateOleObject('Excel.Application');
planilha.Workbooks.add(1);
planilha.Cells.Select;
planilha.Selection.NumberFormat := '@';
planilha.caption:= 'Exportação de dados para o excel';
planilha.visible:= true;
Query1.First;
for linha:= 0 to Query1.RecordCount-1 do
begin
for coluna:= 1 to Query1.FieldCount do
begin
valorCampo:= Query1.Fields[coluna-1].AsString;
planilha.cells[linha+2,coluna]:= valorCampo;
end;
Query1.Next;
end;
for coluna:=1 to Query1.FieldCount do
begin
valorCampo:= Query1.Fields[coluna-1].DisplayLabel;
planilha.cells[1,coluna]:= valorCampo;
end;
planilha.columns.AutoFit;
end;
Var
linha, coluna: integer;
planilha: variant;
valorCampo: string;
begin
planilha:= CreateOleObject('Excel.Application');
planilha.Workbooks.add(1);
planilha.Cells.Select;
planilha.Selection.NumberFormat := '@';
planilha.caption:= 'Exportação de dados para o excel';
planilha.visible:= true;
Query1.First;
for linha:= 0 to Query1.RecordCount-1 do
begin
for coluna:= 1 to Query1.FieldCount do
begin
valorCampo:= Query1.Fields[coluna-1].AsString;
planilha.cells[linha+2,coluna]:= valorCampo;
end;
Query1.Next;
end;
for coluna:=1 to Query1.FieldCount do
begin
valorCampo:= Query1.Fields[coluna-1].DisplayLabel;
planilha.cells[1,coluna]:= valorCampo;
end;
planilha.columns.AutoFit;
end;
Vinicius Araujo
Curtir tópico
+ 0
Responder
Posts
31/03/2015
Thiago Santana
Vê se este artigo meu te ajuda.
Exportando dados para o Excel
Exportando dados para o Excel
Responder
Gostei + 0
31/03/2015
Vinicius Araujo
Ajudou um pouco, porem queria resolver sem precisar instalar componente, usando somente os códigos.
O código que faz a filtragem é este:
O código que faz a filtragem é este:
procedure TFormrelcorreio.BitBtndataClick(Sender: TObject);
begin
// Cancela qualquer definição de faixa de dados (filtragem)
ClientDataSet1.CancelRange;
// define que o indice usado será a data do pedido
ClientDataSet1.IndexFieldNames:= 'Data';
// Exibe apenas os registros nesta faixa de datas
ClientDataSet1.SetRange([DateToStr(DateTimePickerinicial.Date)],[DateToStr(DateTimePickerfinal.Date)]);
if ClientDataSet1.Eof then // fim de arquivo
begin
ClientDataSet1.CancelRange;
ShowMessage('Nenhum pedido encontrado no período informado!');
DateTimePickerinicial.SetFocus;
end
else
begin
Height := 375;
Top := 110;
DBGrid1.SetFocus;
end;
end;
begin
// Cancela qualquer definição de faixa de dados (filtragem)
ClientDataSet1.CancelRange;
// define que o indice usado será a data do pedido
ClientDataSet1.IndexFieldNames:= 'Data';
// Exibe apenas os registros nesta faixa de datas
ClientDataSet1.SetRange([DateToStr(DateTimePickerinicial.Date)],[DateToStr(DateTimePickerfinal.Date)]);
if ClientDataSet1.Eof then // fim de arquivo
begin
ClientDataSet1.CancelRange;
ShowMessage('Nenhum pedido encontrado no período informado!');
DateTimePickerinicial.SetFocus;
end
else
begin
Height := 375;
Top := 110;
DBGrid1.SetFocus;
end;
end;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)