Pessoal,

fiz um programa para exportar dados para o Excel. Preciso criar dentro do mesmo 
XLS várias Worksheets. Pelo programa que fiz ele cria uma a mais e não está 
colocando o nome delas corretamente. Alguém já teve algum problema parecido?

Segue abaixo o programa que fiz.

Marcos Ferreira


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure ExportDBGrid(toExcel: Boolean);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.ExportDBGrid(toExcel: Boolean);
var
  i: Integer;
  ExcelApp: Variant;
begin
  if toExcel then
  begin
    ExcelApp := CreateOleObject('Excel.Application');
    ExcelApp.Visible := false;
    ExcelApp.DisplayAlerts := false;
    ExcelApp.WorkBooks.Add;
    for i := 1 to 10 do
    begin
      ExcelApp.WorkBooks[1].WorkSheets.Add;
      ExcelApp.WorkBooks[1].WorkSheets[i].Name := IntToStr(i);
    end;
    i := i + 1;
    ExcelApp.WorkBooks[1].WorkSheets.Add;
    ExcelApp.WorkBooks[1].WorkSheets[i].Name := 'Final';

    ExcelApp.Visible := true;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ExportDBGrid(True);
end;

end.

Responder a