2013-12-12 11 views
5

tôi là tạo ra một bảng với Delphi Excel, nhưng vấn đề tôi phải đối mặt là khi tôi sử dụng mã này:Cách thêm trang tính sau trang tính cuối cùng của bảng tính?

Workbook.Sheets.Add; 

bảng mới được thêm vào trước các bảng tính đang được chọn:

enter image description here

Có ai biết cách thêm trang tính sau trang tính cuối cùng của bảng tính không?

+2

FYI, các [ 'Worksheets.Add '] (http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.worksheets.add.aspx) phương thức có 4 tham số tùy chọn. – TLama

+1

'Workbook.Sheets.Add.After;' Làm điều này? – joostmakaay

+3

Có thể giống như 'Workbook.Sheets.Add (NULL, Workbook.Sheets.Count)'. – TLama

Trả lời

5

Phương thức Add chấp nhận các thông số để bạn cho biết vị trí chèn trang tính mới, cụ thể là tham số After. Nó phải là một tham chiếu đến trang tính để chèn trang tính mới sau đó. Trong trường hợp của bạn, bạn muốn tờ cuối cùng. Worksheets là một mảng dựa trên 1, do đó, trang tính cuối cùng được cung cấp bởi Worksheets[Worksheets.Count]. Đưa nó tất cả cùng nhau, chúng ta có được điều này:

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

Để thêm một tờ mới, chúng tôi cần phải sử dụng các phương pháp .Sheets.Add, nó có năm tham số (bảng trước đó, các tờ sau nó, và 3 khác , chỉ có thần biết) trong trường hợp này tôi được sử dụng (NULL, aSheet, NULL, NULL, 0) trong đó aSheet để chèn nó sau lần cuối cùng. tạm biệt

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; 
+0

Chào mừng bạn đến với Stack Overflow. Chúng tôi thường thích câu trả lời để bao gồm một số câu * trả lời câu hỏi, cùng với một số mã để chứng minh, nếu cần. Mã của chính nó làm một công việc nghèo của trả lời một câu hỏi bởi vì nó buộc người đọc phải kiểm tra mã rất cẩn thận để hiểu chính xác phần nào của mã thực sự có liên quan đến câu hỏi trong tầm tay. –

+0

ok .. cảm ơn bạn đã bình luận – Pericles

+0

Đây là ràng buộc sớm. Asker đang sử dụng giới hạn muộn. –

-1

Sử dụng sau khi tham số là chính xác, nhưng tôi cũng đang nhận thấy rằng tôi cần phải sử dụng Type.Missing cho các thông số khác mà tôi không rõ

Các vấn đề liên quan