当前位置:首页 > 网络编程 > 软件语言 > DELPHI > Delphi开发OLE自动化控制器操纵Excel

Delphi开发OLE自动化控制器操纵Excel

点击次数:75 次 发布日期:2008-11-09 08:46:20 作者:源代码网
源代码网推荐
广告载入中
OLE自动化是Windows应用程序之间互相操纵的一种技巧。被操纵的一方称为自动化服务器(也称自动化对象),典型的自动化服务器有Microsoft Word、Excel和Powerpoint。操纵自动化服务器的一方称为自动化控制器。在开发数据库应有程序中,经常需要借助Microsoft Excel的强大报表功能,把数据库中的数据输出到Excel表格中。Delphi 5.0以前的版本虽然也可以编写自动化控制器和自动化服务器,但编写程序较为复杂,不易掌握。Delphi 5.0对于OLE提供了强大的支持,利用Delphi 5.0最新提供的Servers栏控件可以很容易开发OLE自动化控制器实现对OLE自动化服务器的调用,发挥Word、Excel、Powerpoint的强大功能。

下面给出一利用Delphi 5.0开发OLE自动化控制器操纵Excel的实例,希望对用Delphi开发OLE应用程序的编程人员有所帮助。

首先新建一Application, 然后在Form1上放置

            Servers栏控件ExcelApplication1、 ExcelWorkbook1、

            ExcelWorksheet1, 再放置控件Table1、 Datasource1、

            Dbgrid1、 Button1、 Button2、 Button3、 Button4, 并设置

            Table1.databasename:=dbdemos,

            Table1.TableName:=Country.db,

            Table1.active:=True, Button1.Caption:="

            SaveToExcel",

            Button2.caption:="PrintPreview",

            Button3.caption:="Print",

            Button4.caption:="CloseExcel"。 
软件开发网 www.mscto.com

代码如下:

unit Unit1;

            interface

            uses

            Windows, Messages, SysUtils, Classes,

            Graphics, Controls,

            Forms, Dialogs, Excel97, OleServer, Db, DBTables,

            Grids, DBGrids, StdCtrls;

            type

            TForm1 = class(TForm)

            ExcelApplication1: TExcelApplication;

            ExcelWorkbook1: TExcelWorkbook;

            ExcelWorksheet1: TExcelWorksheet;

            Table1: TTable;

            Table1Name: TStringField;

            Table1Capital: TStringField;

            Table1Continent: TStringField;

            Table1Area: TFloatField;

            Table1Population: TFloatField;

            button1: TButton;

            DataSource1: TDataSource;

            DBGrid1: TDBGrid;

            Button2: TButton;

            Button3: TButton;

            Button4: TButton;

            procedure button1Click(Sender: TObject);

            procedure Button2Click(Sender: TObject);

            procedure Button3Click(Sender: TObject);

            procedure Button4Click(Sender: TObject);

            private

            { Private declarations }

            public

            { Public declarations }

            end;

            var

            Form1: TForm1;

            implementation

            {$R *.DFM}

            procedure TForm1.button1Click(Sender: TObject);

            var

            i,row,column:integer;

            begin

            Try

            ExcelApplication1.Connect;

            Except

            MessageDlg("Excel may not be installed",

            mtError, [mbOk], 0);

            Abort;

            End;

            ExcelApplication1.Visible[0]:=True;

            ExcelApplication1.Caption:="Excel Application";

            ExcelApplication1.Workbooks.Add(Null,0);

            ExcelWorkbook1.ConnectTo

            (ExcelApplication1.Workbooks[1]);

            ExcelWorksheet1.ConnectTo

            (ExcelWorkbook1.Worksheets[1] as _Worksheet);

            Table1.Open;

            row:=1;

            While Not(Table1.Eof) do

            begin

            column:=1;

            for i:=1 to Table1.FieldCount do

            begin

            ExcelWorksheet1.Cells.Item[row,column]:

            =Table1.fields[i-1].AsString;

            column:=column 1;

            end;

            Table1.Next;

            row:=row 1;

            end;

            end;

            procedure TForm1.Button2Click(Sender: TObject);

            begin

            ExcelWorksheet1.PrintPreview;

            end;

            procedure TForm1.Button3Click(Sender: TObject);

            begin

            ExcelWorksheet1.PrintOut;

            end;

            procedure TForm1.Button4Click(Sender: TObject);

            begin

            ExcelApplication1.Disconnect;

            ExcelApplication1.Quit;

            end;

            end.

源代码网推荐

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华