如何在工作簿的最后一页之后添加工作表?

时间:2013-12-12 14:51:39

标签: excel delphi

我正在使用Delphi生成Excel工作表,但我遇到的问题是当我使用此代码时:

Workbook.Sheets.Add;

在当前选定的工作表之前添加新工作表:

enter image description here

有没有人知道如何在工作簿的最后一张工作表之后添加工作表?

3 个答案:

答案 0 :(得分:5)

Add方法接受您的参数,以指示插入新工作表的位置,尤其是After参数。它应该是片材的参考,以便在之后插入新片材。在您的情况下,您想要最后一页。 Worksheets是一个基于1的数组,因此最后一个工作表由Worksheets[Worksheets.Count]给出。总而言之,我们得到了这个:

Workbook.Worksheets.Add(After := Workbook.Worksheets[Workbook.Worksheets.Count]);

答案 1 :(得分:2)

要添加新工作表,我们需要使用方法.Sheets.Add,它有五个参数(前面的工作表,后面的工作表,以及其他3个,只有上帝知道)在这种情况下我用过(NULL, aSheet,NULL,NULL,0)其中aSheet在最后一个之后插入它。 再见

uses
        ... OleServer,  ExcelXP ...
    type
      TForm1 = class(TForm)
        Button1: TButton;
        ExcelApplication1: TExcelApplication;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;    
   ...      
    procedure TForm1.Button1Click(Sender: TObject);
    var
    Excelfile:OleVariant;
    aBook: _WORKBOOK;
    aSheet: _WORKSHEET;
    begin
    Excelfile:='c:\plantilla.xls';
    ExcelApplication1.connect;
    aBook:= ExcelApplication1.workbooks.add(Excelfile,0);        

    aSheet:= ExcelApplication1.sheets[aBook.Sheets.Count] as _WORKSHEET;
    aBook.Sheets.Add(NULL,aSheet,NULL,NULL,0);

    aSheet:= ExcelApplication1.sheets[aBook.Sheets.Count] as _WORKSHEET;
    asheet.Name:='Test last position';

    ExcelApplication1.visible[0]:=true;
    ExcelApplication1.disconnect;
    end;

答案 2 :(得分:-1)

使用after参数是正确的,但我也发现我需要将Type.Missing用于我未指定的其他参数