利用Delphi 5中调用Excel 97

    技术2022-05-11  129

    利用Delphi 5中调用Excel 97 ---- 在Delphi 5中简单地封装了一组Microsoft Office自动化对象(Automation servers)。它使得我们很容易地把Office中的应用程序(Word, Excel, PowerPoint, Outlook and Access等)当作一个com应用服务器进行控制。在Delphi 5中已经带了Word与PowerPoint的例子,因为Excel的调用与这两个应用服务器的调用略有不同,所以本人根据这两个例子写了个Excel 97的简单例子以供参考。 ---- 步聚 1.    创建一个普通Application。 2.    在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。 3.    连接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.Disconnect;                 ExcelWorkbook1.Disconnect;                 ExcelApplication1.Disconnect;         Except         End; ---- 4. 对Excel的一些操作: 选择当前Workbook的某一Worksheet. procedure TForm1.ComboBox1DropDown (Sender: TObject); 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'].Select; 打开一个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; ---- 说明 ---- 本程序在Win98+Delphi 5+Excel 97下运行通过。本例子还可以作适当的扩充,如DDE、执行宏调用、保存文件、打印文件及对Excel的设置等,此设置方法请参阅Microsoft Excel Visual Basic参考中的Microsoft Excel对象。

    最新回复(0)