Fórum Cmo Fazer via Delphi um SaveAs no Excel? #222787
27/03/2004
0
Saudações
Estou desenvolvendo uma aplicação, que tem que exportar os dados para o excel, até ai tudo bem, porém em vez de fazer um save, gostaria de saber cmo faço pra fazer um saveAs.
[]´s Jardel
Estou desenvolvendo uma aplicação, que tem que exportar os dados para o excel, até ai tudo bem, porém em vez de fazer um save, gostaria de saber cmo faço pra fazer um saveAs.
[]´s Jardel
Jardelbelo
Curtir tópico
+ 0
Responder
Posts
27/03/2004
Rômulo Barros
[url]http://delphiforum.icft.com.br/forum/viewtopic.php?t=35579&highlight=excel[/url]
Vc poderá ir na paleta Servers e dá uma olhadinha no help do delphi em relação aos componentes do excel...
Vc poderá ir na paleta Servers e dá uma olhadinha no help do delphi em relação aos componentes do excel...
Responder
Gostei + 0
25/09/2012
Alvaro Vieira
Já existem muitas soluções por aí, mas resolvi juntar algumas delas para que a procura do pessoal ficasse mais fácil. Tomei como base o cód. em http://www.activedelphi.com.br/forum/viewtopic.php?p=692&sid=4f8514b1852b4ca152f24ad046ff1149
O que o código abaixo resolve:
-Não usa bde, faz uso do componente TDBF (http://tdbf.sourceforge.net/)
-Não abre janela com a pergunta para sobrepor o arquivo xls ao usar o comando excel.ActiveWorkbook.SaveAs
-Pode ser adaptado para gerar uma tabela XLS a partir de qualquer outra tabela.
Abaixo o código único e completo, basta salva-lo como DBFToExcel.dpr.
O que o código abaixo resolve:
-Não usa bde, faz uso do componente TDBF (http://tdbf.sourceforge.net/)
-Não abre janela com a pergunta para sobrepor o arquivo xls ao usar o comando excel.ActiveWorkbook.SaveAs
-Pode ser adaptado para gerar uma tabela XLS a partir de qualquer outra tabela.
Abaixo o código único e completo, basta salva-lo como DBFToExcel.dpr.
program DBFToExcel;
uses
Messages, SysUtils, Variants, Dialogs, ComObj, dbf;
procedure GerarExcel(Consulta: TDbf; cPath: string);
var
coluna, linha: integer;
excel: variant;
valor: string;
begin
try
excel := CreateOleObject(Excel.Application);
excel.Workbooks.add(1);
except
ShowMessage(Erro. Versão do Ms-Excel Incompatível);
Exit;
end;
excel.visible := false;
Consulta.First;
try
for linha := 0 to Consulta.RecordCount - 1 do
begin
for coluna := 1 to Consulta.FieldCount do
begin
valor := Consulta.Fields[coluna - 1].AsString;
excel.cells[linha + 2, coluna] := valor;
end;
Consulta.Next;
end;
for coluna := 1 to Consulta.FieldCount do
begin
valor := Consulta.Fields[coluna - 1].DisplayLabel;
excel.cells[1, coluna] := valor;
end;
excel.columns.AutoFit;
excel.DisplayAlerts := false; //Evita pedir a confirmação de sobreposição
//excel.ActiveWorkbook.SaveAs(cPath+Invoice.xls, xlnormal, , , False, false);
excel.ActiveWorkbook.SaveAs(cPath+Invoice.xls);
excel.Quit;
excel := unassigned;
except
excel.WorkBooks.Disconnect; //desconecta sua aplicação do documento aberto no excel.
excel.Application.Disconnect; //desconecta sua aplicação do Excel
ShowMessage(Aconteceu um erro desconhecido durante a conversão da tabela para o Ms-Excel);
end;
end;
var
i: word;
cPath: string;
Dbf1: TDBF;
begin
if ParamCount > 0 then
cPath := ParamStr(1)
else
cPath := ExtractFileDir( ParamStr(0) );
if Copy(cPath,Length(cPath),1) \ then
cPath := cPath +\;
try
Dbf1 := TDBF.Create(nil);
Dbf1.TableName := Invoice.dbf;
Dbf1.FilePathFull := cPath;
Dbf1.Active := true;
Dbf1.First;
GerarExcel(dbf1, cPath);
except
ShowMessage(Desculpe-me, mas tive problemas p/ abrir o arquivo +Dbf1.TableName+ e gerar Invoice.xls em +cPath);
end;
Dbf1.Active := false;
end.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)