我正在使用Delphi生成Excel工作表,但我遇到的问题是当我使用此代码时:
Workbook.Sheets.Add;
在当前选定的工作表之前添加新工作表:
有没有人知道如何在工作簿的最后一张工作表之后添加工作表?
答案 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用于我未指定的其他参数