Array
(
)

delphi excel

Radolpho
   - 19 ago 2004

Ola pessoal .

Como eu faço para um aplicação em delphi 7 que salve os dados das tabelas em planilhas do excel

valeu :D


Mkoch
   - 19 ago 2004

procedure SalvaParaExcel(const Valores: ArrayDinString);
var
Excel: Variant;
I, J, Cols, Lins: Integer;
SaveDialog: TSaveDialog;
NomeArq: String;
begin
try
try
SaveDialog := TSaveDialog.Create(Application);
NomeArq := ´´;
//Configura o SaveDialog.
with SaveDialog do
begin
Title := ´Salvar para Microsoft Excel´;
InitialDir := ´C:\´;
DefaultExt := ´*.xls´;
Filter := ´Microsoft Excel|*.xls´;
if Execute then
NomeArq := Trim(FileName);
end;//with


if Trim(NomeArq) = ´´ then
begin
Application.MessageBox(´Por favor informe um nome para o arquivo.´, ´Mensagem de Erro´, MB_ICONQUESTION+MB_OK);
Exit;
end;//if

if Copy(NomeArq, Length(NomeArq) - 3, 4) <> ´.xls´ then
begin
Application.MessageBox(PChar(´O nome do arquivo ´´´ + NomeArq + ´´´ é inválido.´), ´Mensagem de Erro´, MB_ICONQUESTION+MB_OK);
Exit;
end;//if

//Verifica se o Arquivo já existe.
if FileExists(NomeArq) then
if not Application.MessageBox(PChar(´O arquivo ´´´ + NomeArq + ´´´ já existe. Deseja substítuílo?´), ´Mensagem de Questionamento´, MB_ICONQUESTION+MB_YESNOCANCEL) = IDYes then
Exit;

//Cria o Objeto Application do Excel.
Excel := CreateOleObject(´Excel.Application´);

//Mostra o Excel (se quiser vc quiser)
//Excel.Visible := True;

//Cria um novo WorkBook.
Excel.WorkBooks.Add;

//Preenche as células do Excel com os dados do vetor dinâmico.
Lins := Length(Valores);//Total de Linhas.
Cols := Length(Valores[0]);//Total de Colunas.

for I := 0 to Lins - 1 do
begin
for J := 0 to Cols -1 do
begin
//Se for data altero as ´/´ para ´.´
if StrToDateDef(Valores[I, J], 0) > 0 then
Valores[I, J] := StringReplace(Valores[I, J], ´/´, ´.´, [rfReplaceAll]);

Excel.WorkBooks[1].Sheets[1].Cells[I + 1, J + 1] := Valores[I, J];
end;//for J
end;//for I

//Salva a Planilha.
Excel.WorkBooks[1].SaveAs(NomeArq);

Application.MessageBox(PChar(´Arquivo ´´´ + NomeArq + ´´´ gerado com sucesso.´), ´Mensagem de Informação´, MB_ICONINFORMATION+MB_OK);
//Se aocntecer algum erro, trata-o.
except
on E: Exception do
begin
Application.MessageBox(PChar(´Não foi possível gerar o arquivo ´´´ + NomeArq + ´´´.´ + #13 + ´Erro:´ + E.Message), ´Mensagem de Erro´, MB_ICONQUESTION+MB_OK);
end;//for
end;//try except
finally
//Sai do Excel
Excel.Quit;

SaveDialog.Free;
end;//try finally
end;


Lucas Silva
   - 19 ago 2004

Se tiver alguma dúvida, utilize o método de pesquisa do fórum...