利用Delphi 5中呼叫Excel 97 (轉)

gugu99發表於2008-07-20
利用Delphi 5中呼叫Excel 97 (轉)[@more@]

利用 5中 97
--------------------------------------------------------------------------------
 
---- 在Delphi 5中簡單地封裝了一組 自動化(Automation servers)。它使得我們
很容易地把Office中的應用(, Excel, , and Access等)當作一個com應用
進行控制。

在Delphi 5中已經帶了Word與PowerPoint的例子,因為Excel的呼叫與這兩個應用伺服器的呼叫略有不同,
所以本人根據這兩個例子寫了個Excel 97的簡單例子以供參考。


---- 步聚

建立一個普通Application。

在Form中分別放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。

連線Excel 97,具體方法如下:
開啟Excel97。
Try
ExcelApplication1.Connect;
Except
End;
ExcelApplication1.Visible[0]:=True;
增加一個Workbook。
ExcelWorkbook1.ConnectTo(ExcelApplication1.
Workbooks.Add(EmptyParam,0));

新增一個Worksheet。
var
Temp_Worksheet: _WorkSheet;
begin
Try
Temp_Worksheet:=ExcelWorkbook1.
WorkSheets.Add(EmptyParam,
EmptyParam,EmptyParam,EmptyParam,0)
as _WorkSheet;//(注意)
ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);
Except
ShowMessage('Failure');
End;
end;
關閉Excel.
Try
ExcelApplication1.Quit;
ExcelWorksheet1.Dinnect;
ExcelWorkbook1.Disconnect;
ExcelApplication1.Disconnect;
Except
End;
---- 4. 對Excel的一些操作:
選擇當前Workbook的某一Worksheet.
procedure TForm1.ComboBox1DropDown
(Sender: T);
var
i: Integer;
begin
ComboBox1.Clear;
For i:=1 to ExcelWorkbook1.
Worksheets.Count do
ComboBox1.Items.Add
((ExcelWorkbook1.Worksheets.Item[i]
as _WorkSheet).Name);
end;

procedure TForm1.ComboBox1Change
(Sender: TObject);
begin
ExcelWorkSheet1.ConnectTo
(ExcelWorkbook1.Worksheets.Item
[ComboBox1.ItemIndex+1] as _WorkSheet);
ExcelWorkSheet1.Activate;
end;

選擇某一Workbook:
procedure TForm1.ComboBox2DropDown
(Sender: TObject);
var
i: Integer;
begin
ComboBox2.Clear;
if ExcelApplication1.Workbooks.Count >0 then
For i:=1 to ExcelApplication1.Workbooks.Count do
Combobox2.Items.Add(ExcelApplication1.
Workbooks.Item[i].Name);
end;

procedure TForm1.ComboBox2Change(Sender: TObject);
begin
ExcelWorkSheet1.Disconnect;
ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks.
Item[Combobox2.ItemIndex+1]);
ExcelWorkBook1.Activate;
ExcelWorksheet1.ConnectTo(ExcelWorkBook1.
ActiveSheet as _WorkSheet);
ExcelWorkSheet1.Activate;
end;

對某一單元格進行賦值及取值。
procedure TForm1.Button5Click(Sender: TObject);
begin
ExcelWorksheet1.Cells.Item[SpinEdit2.Value,
SpinEdit1.Value]:=Edit1.Text;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
Edit1.Text:=ExcelWorksheet1.Cells.Item[
SpinEdit2.Value,SpinEdit1.Value];
end;

選擇某一區域
ExcelWorkSheet1.Range['A1','C1'].;

開啟一個Excel。
if OpenDialog1.Execute then
Begin
Try
ExcelWorkBook1.ConnectTo
(ExcelApplication1.Workbooks.Open
(OpenDialog1.FileName,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,
EmptyParam,EmptyParam,0));
ExcelWorkSheet1.ConnectTo
(ExcelWorkBook1.Activesheet
as _Worksheet);
Except;
End;
End;

---- 說明
---- 本程式在+Delphi 5+Excel 97下執行透過。本例子還可以作適當的擴充,如DDE、宏呼叫、
儲存檔案、列印檔案及對Excel的設定等,此設定方法請參閱Microsoft Excel 參考中的
Microsoft Excel物件。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1007546/,如需轉載,請註明出處,否則將追究法律責任。

相關文章