Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Exportar para o excel


Victor_DF

Pergunta

Oi pessoal...

Eu estou tentando agora, exportar dados de um StringGrid para o Excel, eu fiz um teste e deu certo, mas na hora de complementar o código deu um erro "OLE error 800A03EC." e ele não executa nada.

O que pode ser? E como resolver?

Aqui esté o código:

procedure TForm1.Button1Click(Sender: TObject);
var
  c,ct,cl: integer;
  t,tx: String;
begin
  MSExcel:= CreateOleObject('Excel.Application');
  MSExcel.WorkBooks.Add(1);
  MSExcel.Caption:= Edit1.Text;
  MSExcel.Visible:= false;
  c:= AGrid.RowCount;
  cl:= 1;
  ct:= 0;
  while ct <> c do
    begin
      Edit1.text:= AGrid.Rows[ct].DelimitedText;
      tx:= Edit1.Text;
      t:= copy(Edit1.Text,1,Pos(AGrid.Rows[ct].Delimiter,Edit1.Text)-1);
      Edit2.Text:= t;
      delete(tx,1,Pos(AGrid.Rows[ct].Delimiter,tx)+1);
      if tx = '' then
      begin
        cl:= cl + 1;
      end;
      MSExcel.Cells[cl,ct]:= t;
      ct:= ct + 1;
    end;
  MSExcel.WorkBooks.Add(1);
  MSExcel.Columns.Autofit;
  SaveDialog1.Execute;
  MSExcel.WorkBooks[1].SaveAs(SaveDialog1.FileName);
  MSExcel.Quit;
end;

Obrigado

Victor

Editado por Victor_DF
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
Eu estou tentando agora, exportar dados de um StringGrid para o Excel

A maneira mais simples seria assim:

uses ComObj;

procedure TForm1.Button1Click(Sender: TObject);
var excel: variant;
    lin,col : integer;
begin

      excel := CreateOleObject('Excel.Application');
      excel.Workbooks.add(1);
      excel.Cells.Select;
      excel.Selection.NumberFormat := '@';

      for lin := 1 to StringGrid1.RowCount  do
         for col := 1 to StringGrid1.ColCount do
            begin
               excel.cells[lin,col] := StringGrid1.cells[lin,col];
               excel.columns.AutoFit;
               excel.cells[lin,col].Select;
            end;
      excel.visible := true;
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas...

Ficou perfeito, só que vinham com linhas no lugar das colunas, ai foi só inverter os parametros do comando "excel.cells[]", ai ficou legal...

O que mudou no código foi somente isso mesmo, ficou assim:

MSExcel.cells[col,lin] := AGrid.cells[lin,col]; 
MSExcel.columns.AutoFit;
MSExcel.cells[col,lin].Select;
E também precisei inverter as contagens de linha e de coluna, porque estava faltando dados no arquivo *.xls gerado, assim:
for lin := 1 to AGrid.ColCount  do
    for col := 1 to AGrid.RowCount do

Valeu cara, abraço

Editado por Victor_DF
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...