Delphi - Excel com várias abas

Delphi

19/12/2018

Boa tarde pessoal.
No código abaixo
Excel: Variant;

 Excel := CreateOleObject(''''Excel.Application'''');
 Excel.Visible := True;
 Excel.Workbooks.Add;
 Excel.Workbooks[1].WorkSheets[1].Name := ''''Aluno'''';
 Application.BringToFront;

 Excel.WorkBooks[1].Sheets[1].Cells[ContaLinha, 1] := ''''IdAluno'''';
 Excel.WorkBooks[1].Sheets[1].Cells[ContaLinha, 2] := ''''Matricula'''';

 Excel.WorkBooks[1].Sheets[1].Cells[ContaLinha, 1] :=  ''''2514'''';
  Excel.WorkBooks[1].Sheets[1].Cells[ContaLinha, 2] := ''''JOSE'''';


Agora como faço para logo abaixo desse código inserir outra aba(planilha) e continuar inserindo nela?
Leandro Carvalho

Leandro Carvalho

Curtidas 1

Melhor post

Emerson Nascimento

Emerson Nascimento

22/12/2018

E, pra voltar a preencher uma aba que já foi tratada, basta atribuir a variável novamente:
var
  Excel: variant;
  Plan: variant;
begin
  Excel := CreateOleObject('Excel.Application');
  Excel.Visible := True;

  Excel.Workbooks.Add;

  Application.BringToFront;

  Plan := Excel.WorkBooks[1].Sheets[1];
  Plan.Name := 'Aluno';
  Plan.Cells[1, 1] := 'IdAluno';
  Plan.Cells[1, 2] := 'Matricula';
  Plan.Cells[2, 1] := '2514';
  Plan.Cells[2, 2] := 'JOSE';

  Plan := Excel.Workbooks[1].Sheets.Add(null, Plan); // adiciona planilha no fim (fica ativa)
  Plan.Name := '2o. Aluno';
  Plan.Cells[1, 1] := '2o. IdAluno';
  Plan.Cells[1, 2] := '2o. Matricula';
  Plan.Cells[2, 1] := '2o. 2515';
  Plan.Cells[2, 2] := '2o. MARIA';

  Plan := Excel.Workbooks[1].Sheets.Add(null, Plan); // adiciona planilha no fim (fica ativa)
  Plan.Name := '3o. Aluno';
  Plan.Cells[1, 1] := '3o. IdAluno';
  Plan.Cells[1, 2] := '3o. Matricula';
  Plan.Cells[2, 1] := '3o. 2516';
  Plan.Cells[2, 2] := '3o. PEDRO';

  Plan := Excel.WorkBooks[1].Sheets[1]; // volto para a planilha 1
  Plan.Cells[3, 1] := '2517';
  Plan.Cells[3, 2] := 'ANTONIO';
  Plan.Cells[4, 1] := '2518';
  Plan.Cells[4, 2] := 'JOANA';

end;

GOSTEI 2

Mais Respostas

Casuc

Casuc

19/12/2018

Quickpayportal is one such great billing system where one can pay the bills for the services received from the clinics. www.quickpayportal.com
is a user-friendly payment system which not only allows you to make secure payments but also provides the facility to check your old statements online.
GOSTEI 0
Leandro Carvalho

Leandro Carvalho

19/12/2018

Bom dia
Alguém pode me ajudar.
Por favor.
GOSTEI 0
Flavio Silva

Flavio Silva

19/12/2018

provavelmente você vai usar o índice 2
Excel.Workbooks[2]
GOSTEI 0
Leandro Carvalho

Leandro Carvalho

19/12/2018

Caro Flávio.<br />
<br />
Isso não funciona.<br />
Já tentei várias coisas e não dá certo.
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

19/12/2018

tente assim:
	Excel := CreateOleObject('Excel.Application');
	Excel.Visible := True;

	Excel.Workbooks.Add;
	Excel.Workbooks[1].WorkSheets[1].Name := 'Aluno';

	Application.BringToFront;
 
	Excel.WorkBooks[1].Sheets[1].Cells[ContaLinha, 1] := 'IdAluno';
	Excel.WorkBooks[1].Sheets[1].Cells[ContaLinha, 2] := 'Matricula';
 
	Excel.WorkBooks[1].Sheets[1].Cells[ContaLinha, 1] :=  '2514';
	Excel.WorkBooks[1].Sheets[1].Cells[ContaLinha, 2] := 'JOSE';

	Excel.Workbooks[1].Sheets.Add; // adiciona planilha

	Excel.WorkBooks[1].Sheets[2].Cells[ContaLinha, 1] := 'IdAluno Plan2';
	Excel.WorkBooks[1].Sheets[2].Cells[ContaLinha, 2] := 'Matricula Plan2';
 
	Excel.WorkBooks[1].Sheets[2].Cells[ContaLinha, 1] :=  '2514 plan2';
	Excel.WorkBooks[1].Sheets[2].Cells[ContaLinha, 2] := 'JOSE plan2';


GOSTEI 0
Leandro Carvalho

Leandro Carvalho

19/12/2018

Bom dia.
Emerson....
Essa linha
Excel.Workbooks[1].Sheets.Add;

Funcionou, criou uma nova aba, mas as informações continuou incluindo a aba anterior.
GOSTEI 0
Leandro Carvalho

Leandro Carvalho

19/12/2018

Alguma ideia?
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

19/12/2018

Na linha abaixo da adição na nova aba está demonstrado como manipular a nova aba.
Excel.WorkBooks[1].Sheets[ 2 ].Cells[1, 1] := 'IdAluno Plan2';

ou

Excel.WorkBooks[1].WorkSheets[ 2 ].Cells[1, 1] := 'IdAluno Plan2';

Note que agora estou apontando para a segunda planilha Sheets[2]
GOSTEI 0
Leandro Carvalho

Leandro Carvalho

19/12/2018

Na linha abaixo da adição na nova aba está demonstrado como manipular a nova aba.
Excel.WorkBooks[1].Sheets[ 2 ].Cells[1, 1] := 'IdAluno Plan2';

ou

Excel.WorkBooks[1].WorkSheets[ 2 ].Cells[1, 1] := 'IdAluno Plan2';

Note que agora estou apontando para a segunda planilha Sheets[2]
Eu vi. Ele cria a planilha2 mas continua inserindo na primeira planilha
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

19/12/2018

Tente assim:
var
  Excel: variant;
  Plan: variant;
begin
  Excel := CreateOleObject('Excel.Application');
  Excel.Visible := True;

  Excel.Workbooks.Add;

  Application.BringToFront;

  Plan := Excel.WorkBooks[1].Sheets[1];
  Plan.Name := 'Aluno';
  Plan.Cells[1, 1] := 'IdAluno';
  Plan.Cells[1, 2] := 'Matricula';
  Plan.Cells[2, 1] :=  '2514';
  Plan.Cells[2, 2] := 'JOSE';

  Plan := Excel.Workbooks[1].Sheets.Add(null, Plan); // adiciona planilha no fim (fica ativa)
  Plan.Name := '2o. Aluno';
  Plan.Cells[1, 1] := '2o. IdAluno';
  Plan.Cells[1, 2] := '2o. Matricula';
  Plan.Cells[2, 1] := '2o. 2515';
  Plan.Cells[2, 2] := '2o. MARIA';

  Plan := Excel.Workbooks[1].Sheets.Add(null, Plan); // adiciona planilha no fim (fica ativa)
  Plan.Name := '3o. Aluno';
  Plan.Cells[1, 1] := '3o. IdAluno';
  Plan.Cells[1, 2] := '3o. Matricula';
  Plan.Cells[2, 1] := '3o. 2516';
  Plan.Cells[2, 2] := '3o. PEDRO';
end;

GOSTEI 0
Leandro Carvalho

Leandro Carvalho

19/12/2018

E, pra voltar a preencher uma aba que já foi tratada, basta atribuir a variável novamente:
var
  Excel: variant;
  Plan: variant;
begin
  Excel := CreateOleObject('Excel.Application');
  Excel.Visible := True;

  Excel.Workbooks.Add;

  Application.BringToFront;

  Plan := Excel.WorkBooks[1].Sheets[1];
  Plan.Name := 'Aluno';
  Plan.Cells[1, 1] := 'IdAluno';
  Plan.Cells[1, 2] := 'Matricula';
  Plan.Cells[2, 1] := '2514';
  Plan.Cells[2, 2] := 'JOSE';

  Plan := Excel.Workbooks[1].Sheets.Add(null, Plan); // adiciona planilha no fim (fica ativa)
  Plan.Name := '2o. Aluno';
  Plan.Cells[1, 1] := '2o. IdAluno';
  Plan.Cells[1, 2] := '2o. Matricula';
  Plan.Cells[2, 1] := '2o. 2515';
  Plan.Cells[2, 2] := '2o. MARIA';

  Plan := Excel.Workbooks[1].Sheets.Add(null, Plan); // adiciona planilha no fim (fica ativa)
  Plan.Name := '3o. Aluno';
  Plan.Cells[1, 1] := '3o. IdAluno';
  Plan.Cells[1, 2] := '3o. Matricula';
  Plan.Cells[2, 1] := '3o. 2516';
  Plan.Cells[2, 2] := '3o. PEDRO';

  Plan := Excel.WorkBooks[1].Sheets[1]; // volto para a planilha 1
  Plan.Cells[3, 1] := '2517';
  Plan.Cells[3, 2] := 'ANTONIO';
  Plan.Cells[4, 1] := '2518';
  Plan.Cells[4, 2] := 'JOANA';

end;

Obrigado Emerson.
Deu certo.
GOSTEI 0
POSTAR