Fórum Exportar para Excel campos desejados #448030
07/07/2013
0
tenho uma aplicação de cadastro em Delph com ADOConnection e ADOQuery BD Access.
alguem pode ajudar a criar um form para exportação do BD para o Excel e nessa exportação, definir os campos a serem exportados "SOMENTE NO MOMENTO DA EXPORTAÇÃO", pois num momento eu preciso exportar um campo, em outro momento outro campo e assim vai....
pois com os códigos abaixo os campos já estão pre-definidos e não é assim que preciso:
var
PLANILHA : Variant;
Linha : Integer;
Begin
inherited;
// qy_ocorre -----> minha query
ADOQuery1.Filtered := False;
Linha :=2;
PLANILHA := CreateOleObject('Excel.Application');
PLANILHA.Caption := 'MINHA PLANILHA';
PLANILHA.Visible := False;
PLANILHA.WorkBooks.add(1);
// TITULO DAS COLUNAS
PLANILHA.Cells[1,1] := 'NOME';
PLANILHA.Cells[1,2] := 'RA';
PLANILHA.Cells[1,3] := 'DN';
PLANILHA.Cells[1,4] := 'NATURALIDADE';
PLANILHA.Cells[1,5] := 'CPF';
PLANILHA.Cells[1,6] := 'CSM';
// Formatando o Cabeçalho
PLANILHA.Range['A1','F1'].font.name := 'Verdana'; // Fonte
PLANILHA.Range['A1','F1'].font.size := 12; // Tamanho da Fonte
PLANILHA.Range['A1','F1'].font.bold := true; // Negrito
PLANILHA.Range['A1','F1'].font.italic := true; // Italico
PLANILHA.Range['A1','F1'].font.color := clBlack; // Cor da Fonte
PLANILHA.Range['A1','F1'].Interior.Color := $00ffcf9c; // Cor da Célula
PLANILHA.Cells[1,1].Font.Bold := true;
PLANILHA.Cells[1,2].Font.Bold := true;
PLANILHA.Cells[1,3].Font.Bold := true;
PLANILHA.Cells[1,4].Font.Bold := true;
PLANILHA.Cells[1,5].Font.Bold := true;
PLANILHA.Cells[1,6].Font.Bold := true;
PLANILHA.Cells[1,1].HorizontalAlignment := 3;
PLANILHA.Cells[1,2].HorizontalAlignment := 3;
PLANILHA.Cells[1,3].HorizontalAlignment := 3;
PLANILHA.Cells[1,4].HorizontalAlignment := 3;
PLANILHA.Cells[1,5].HorizontalAlignment := 3;
PLANILHA.Cells[1,6].HorizontalAlignment := 3;
PLANILHA.Range['A1','F50'].Borders.LineStyle := 1;
PLANILHA.Range['A1','F50'].Borders.Weight := 2;
PLANILHA.Range['A1','F50'].Borders.ColorIndex := 1;
ADOQuery1.DisableControls;
// PRRENCHIMENTO DAS CÉLULAS COM OS VALORES DOS CAMPOS DA TABELA
Try
While not ADOQuery1.Eof do
Begin
PLANILHA.Cells[Linha,1]:= ADOQuery1NOME.Value;
PLANILHA.Cells[linha,2] := ADOQuery1RA.Value;
PLANILHA.Cells[Linha,3] := ADOQuery1DN.Value;
PLANILHA.Cells[Linha,4] := ADOQuery1NATURALIDADE.Value;
PLANILHA.Cells[Linha,5] := ADOQuery1CPF.Value;
PLANILHA.Cells[Linha,6] := ADOQuery1CSM.Value;
Linha := Linha + 1;
ADOQuery1.Next;
End;
PLANILHA.Columns.AutoFit;
// caso queira proteger a planilha com senha
// PLANILHA.WorkBooks[1].Sheets[1].Protect(DrawingObjects := True, Contents:=true,
// Scenarios := true, Password := '1234');
// IF SaveDialog1.Execute then // colocar um compnente SaveDialog no form
// PLANILHA.WorkBooks[1].SaveAs(SaveDialog1.FileName);
PLANILHA.Visible := True;
Finally
ADOQuery1.EnableControls;
PLANILHA := Unassigned;
end; // TRY
End;
Paulo
Curtir tópico
+ 0Posts
07/07/2013
Landerson Santos
Se sim, exporte, se não vai pro próximo registro da exportação.
Gostei + 0
07/07/2013
Paulo
Se sim, exporte, se não vai pro próximo registro da exportação.
Sou iniciante, estou com dificuldades. Pode dar mais algumas dicas?
Gostei + 0
08/07/2013
Paulo
Se sim, exporte, se não vai pro próximo registro da exportação.
Sou iniciante, estou com dificuldades. Pode dar mais algumas dicas?
Boa tarde! ainda estou precisando de ajuda.
Gostei + 0
08/07/2013
Landerson Santos
Primeiro passo seria você listar os campo do seu ADOQUERY...
for I := 0 to ADOQuery1.FieldCount -1 do begin Memo1.Lines.Add(ADOQuery1.Fields[i].FieldName); end;
Assim você jogou os campos no MEMO... agora vc vai no memo e seleciona os campos que vc deseja exportar e faz um rotina para verificar se o nome do campo selecionado é igual ao campo que está sendo exportado.
A ideia seria essa.
Gostei + 0
08/07/2013
Landerson Santos
Primeiro passo seria você listar os campo do seu ADOQUERY...
for I := 0 to ADOQuery1.FieldCount -1 do begin Memo1.Lines.Add(ADOQuery1.Fields[i].FieldName); end;
Assim você jogou os campos no MEMO... agora vc vai no memo e seleciona os campos que vc deseja exportar e faz um rotina para verificar se o nome do campo selecionado é igual ao campo que está sendo exportado.
A ideia seria essa.
Outra alternativa seria no Clique do Título da Coluna no BDGRID...
procedure TForm1.DBGrid1TitleClick(Column: TColumn); begin Memo1.Lines.Add(Column.Field.FieldName); end;
Gostei + 0
08/07/2013
Paulo
Primeiro passo seria você listar os campo do seu ADOQUERY...
for I := 0 to ADOQuery1.FieldCount -1 do begin Memo1.Lines.Add(ADOQuery1.Fields[i].FieldName); end;
Assim você jogou os campos no MEMO... agora vc vai no memo e seleciona os campos que vc deseja exportar e faz um rotina para verificar se o nome do campo selecionado é igual ao campo que está sendo exportado.
A ideia seria essa.
Outra alternativa seria no Clique do Título da Coluna no BDGRID...
procedure TForm1.DBGrid1TitleClick(Column: TColumn); begin Memo1.Lines.Add(Column.Field.FieldName); end;
Tem como vc adaptar essa rotina no meu código acima?
Gostei + 0
08/07/2013
Paulo
Primeiro passo seria você listar os campo do seu ADOQUERY...
for I := 0 to ADOQuery1.FieldCount -1 do begin Memo1.Lines.Add(ADOQuery1.Fields[i].FieldName); end;
Assim você jogou os campos no MEMO... agora vc vai no memo e seleciona os campos que vc deseja exportar e faz um rotina para verificar se o nome do campo selecionado é igual ao campo que está sendo exportado.
A ideia seria essa.
Outra alternativa seria no Clique do Título da Coluna no BDGRID...
procedure TForm1.DBGrid1TitleClick(Column: TColumn); begin Memo1.Lines.Add(Column.Field.FieldName); end;
Tem como vc adaptar essa rotina no meu código acima?
Gostei + 0
08/07/2013
Paulo
Primeiro passo seria você listar os campo do seu ADOQUERY...
for I := 0 to ADOQuery1.FieldCount -1 do begin Memo1.Lines.Add(ADOQuery1.Fields[i].FieldName); end;
Assim você jogou os campos no MEMO... agora vc vai no memo e seleciona os campos que vc deseja exportar e faz um rotina para verificar se o nome do campo selecionado é igual ao campo que está sendo exportado.
A ideia seria essa.
Outra alternativa seria no Clique do Título da Coluna no BDGRID...
procedure TForm1.DBGrid1TitleClick(Column: TColumn); begin Memo1.Lines.Add(Column.Field.FieldName); end;
Tem como vc adaptar essa rotina no meu código acima?
Gostei + 0
08/07/2013
Landerson Santos
While not ADOQuery1.Eof do
Begin
//Aqui você faz verificação se o Campo Atual é um dos campos selecionados
// e na listagem de campos abaixo você só vai fazer a exportação dos campos que atenderem ao critério
PLANILHA.Cells[Linha,1]:= ADOQuery1NOME.Value;
PLANILHA.Cells[linha,2] := ADOQuery1RA.Value;
PLANILHA.Cells[Linha,3] := ADOQuery1DN.Value;
PLANILHA.Cells[Linha,4] := ADOQuery1NATURALIDADE.Value;
PLANILHA.Cells[Linha,5] := ADOQuery1CPF.Value;
PLANILHA.Cells[Linha,6] := ADOQuery1CSM.Value;
Linha := Linha + 1;
ADOQuery1.Next;
End;
Amigão... agora é colocar sua cabeça para funcionar aí...
Até
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)