|
Usuários |
|
52 Usuários Online
|
|
[Artigos]
Enviando dados de uma ADOQuery ou ADOTable para o Excel |
Publicado por ActiveDelphi : Sexta, Dezembro 17, 2004 - 04:21 GMT-3 (9087 leituras)
comentar Enviar para um amigo Versão para impressão
|
Esta é uma prática muito interessante, pois você pode incluir no seu sistema um botão onde após fazer uma seleção qualquer pode estar enviando os dados para uma planilha no Excel... Geralmente os funcionários da área administrativa financeira, por exemplo, sempre pedem aos analistas ou programadores gerarem arquivos texto para importar os dados numa planilha Excel, onde eles trabalham os dados de acordo com as suas necessidades.
Neste exemplo vamos utilizar um Form e os seguintes componentes: da paleta ADO vamos utilizar os componentes ADOConnection (pode ser utilizado ou não) uma ADOTable ou uma ADOQuery (no exemplo utilizaremos a ADOTable), não vou entrar em detalhes de conexão que não é o objetivo do artigo, da paleta Servers vamos utilizar o componente ExcelApplication e da paleta Standard um Button. No evento OnClick do componente Button vamos inserir o seguinte código.
procedure TForm1.Button1.Click(Sender: TObject);
var
Planilha : olevariant;
Lin, Col : integer;
begin
// Cria aplicativo Excel, inicializa parametros vazios, aplicação visível e
// utiliza pagina 1 e aba 1
ExcelApplication1 := TExcelApplication.Create(nil);
ExcelApplication1.Workbooks.Add(EmptyParam,0);
ExcelApplication1.Visible[0] := True;
Planilha := ExcelApplication1.Workbooks[1].Worksheets[1];
// Abre tabela
ADOTable1.Open;
// Repetição de cabeçalho o Delphi vai colocar o nome do campo em
// cada coluna, se for ADOQuery pode dar um apelido para cada campo
for Col := 1 to ADOTable1.FieldCount do
begin
Planilha.Cells[1,Col].Select;
Planilha.Cells[1,Col].Font.Bold := True;
Planilha.Cells[1,Col].Value := ADOTable1.Fields[Col-1].DisplayLabel;
end;
// Inicializa na segunda linha
Lin := 2;
// Repetição onde vai inserir os dados da tabela até que seja final de arquivo
while not ( ADOTable1.Eof ) do
begin
for Col := 1 to ADOTable1.FieldCount do
begin
Planilha.Cells[Lin,Col].Select;
Planilha.Cells[Lin,Col].Value := ADOTable1.Fields[Col-1].AsString;
end;
// Adiciona 1 a variável Lin e vai para o próximo registro da tabela
inc(Lin);
ADOTable1.Next;
end;
// Fecha a ADOTable e libera a aplicação Excel aberta da memória
ADOTable1.Close;
ExcelApplication1.Free;
end;
Um exemplo bem simples de fazer, com calma e imaginação pode ser bem implementado, pode utilizar uma ADOQuery fazendo consultas em várias tabelas por exemplo. Este exemplo pode ser feito utilizando os componentes do DBExpress, Interbase e DBE.
Observação: por: Luiz Marcello Soares do Amaral - lm-amaral@uol.com.br
|
|
Comentários | |
| | Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos. |
|
|
Edição 112 |
|
|
50 Programas Fontes |
|
|
Produtos |
|
|