浏览器大全:是一个提供流行浏览器教程、在线学习分享的学习平台!

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

---- 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'。代码如下:

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.

---- 本程序在Delphi 5.0下调试通过。





让DELPHI与OFFICE联姻

  由于微软的Office系列的完善的功能;与Windows和IE的紧密集成以及强大的扩展能力,它实际上已经成为事实上的Windows下办公软件的标准,我们知道在VB中可以建立各种Office对象(Word、Excel)并控制这些对象编辑、打印、保存文档以及控制执行Office中的很多操作。象这样在VB中建立并控制Office对象是十分有用的,例如你可以将一个或者一批数据库自动输入到Word或者Excel中并保存,再通过Outlook将文档分发给其它同仁。
  过去,这只有通过VB才能实现的,但是现在Delphi5也提供了这样强大的对象组。利用Delphi也可以利用Office资源了。
  打开Delphi,滚动Compent Palette到Servers页,就可以看到很多熟悉的控件图标,这些就是Office组件的控件。Delphi 5中对应Office的组件包括了Word、Excel、Access、PowerPoint和Outlook可以说是十分的全面。不过要使用这些组件首先要保证你的系统中安装了Office 97或以上的 版本。
  下面首先来说以下Office组件的基本使用方法Delphi中对于Office中不同的组件,首先要建立一个Application对象,例如要控制Word,首先要建立TWordApplication对象,然后再将诸如TWordDocument等Word对象通过ConnectTo方法连接到TWordApplication对象上。对于其它的Excel、Outlook等也是如此。
  下面我通过具体的范例来说明对Delphi中Office对象的控制,即如何将文字输出到Word中进行简单的排版并保存和打印输出。
  首先建立一个新的工程,在Form1中加入三个TButton对象、一个TMemo对象、一个TWordApplication对象、一个TWordDocument对象、一个TWordFont对象。下面是Form1的代码:
  unit Unit1;
  interface
  uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, Word97, OleServer,Clipbrd;
  type
  TForm1 = class(TForm)
  Memo1: TMemo;
  Button1: TButton;
  WordApplication1: TWordApplication;
  WordDocument1: TWordDocument;
  WordFont1: TWordFont;
  Button2: TButton;
  Button3: TButton;
  procedure FormCreate(Sender: TObject);
  procedure Button1Click(Sender: TObject);
  procedure Button2Click(Sender: TObject);
  procedure Button3Click(Sender: TObject);
  private
  { Private declarations }
  public
  { Public declarations }
  end;
  var
  Form1: TForm1;
  implementation
  {$R *.DFM}
  procedure TForm1.FormCreate(Sender: TObject);
  begin
  Button1.Caption := '插入到Word';
  Button2.Caption := '打印';
  Button3.Caption := '退出';
  Button2.Enabled :=False;
  Button3.Enabled :=False;
  end;
  procedure TForm1.Button1Click(Sender: TObject);
  var
  Template,NewTemplate,ItemIndex:OleVariant;
  procedure setfont;
  begin
  WordFont1.ConnectTo(WordDocument1.Sentences.Get_Last.Font);
  WordFont1.Bold := 1;
  WordFont1.Italic := 1;
  WordFont1.shadow := 1;
  WordFont1.Size := 12;
  end;
  begin
  try
  Template := EmptyParam;
  NewTemplate := True;
  ItemIndex := 1;
  try
  Wordapplication1.Connect;
  except
  MessageDlg('无法连接,也许没有安装Word', mtError, [mbOk], 0);
  Abort;
  end;
  Wordapplication1.Visible := False;
  WordApplication1.Caption := 'Delphi Word';
  file://建立一个新文档
  Template := EmptyParam;
  NewTemplate := False;
  WordApplication1.Documents.Add(Template, NewTemplate);
  file://建立WordDocument连接
  WordDocument1.ConnectTo(WordApplication1.Documents.Item(ItemIndex));
  file://因为Word进行拼写检查需要很多时间,所以首先关闭检查
  WordApplication1.Options.CheckSpellingAsYouType := False;
  WordApplication1.Options.CheckGrammarAsYouType := False;
  file://将Memo1的内容拷贝到Word中
  SetFont;
  WordDocument1.Range.InsertAfter('Memo1的文本: ' + #13+Memo1.Text + #13);
  Button2.Enabled :=True;
  Button3.Enabled :=True;
  Button1.Enabled :=False;
  except
  on E: Exception do
  begin
  ShowMessage(E.Message);
  WordApplication1.Disconnect;
  end;
  end;
  end;
  procedure TForm1.Button2Click(Sender: TObject);
  begin
  WordDocument1.PrintOut;
  end;
  procedure TForm1.Button3Click(Sender: TObject);
  var
  SaveChanges,OriginalFormat,RouteDocument,SavePath: OleVariant;
  begin
  SaveChanges := WdDoNotSaveChanges;
  OriginalFormat := UnAssigned;
  RouteDocument := UnAssigned;
  try
  SavePath:='c:\samp.doc';
  WordDocument1.SaveAs(SavePath);
  WordDocument1.Close;
  WordDocument1.Disconnect;
  WordApplication1.Quit(SaveChanges, OriginalFormat, RouteDocument);
  WordApplication1.Disconnect;
  close;
  except
  on E: Exception do
  begin
  Showmessage(E.Message);
  WordApplication1.Disconnect;
  end;
  end;
  end;
  end.
  运行程序,在Memo1中输入一些文字,点击“插入到Word”按钮,然后点击“打印”按钮就可以将由Memo1输入到Word中的文本打印出来。点击“退出”按钮就可以将文档保存到 c:\samp.doc 中然后关闭与Word的连接并退出。
  由上面的范例可以看到,Delphi对于Office组件的编程同VB是有一些相似的,由于不知道什么原因,Delphi并没有提供Office组件的帮助文档。上面的程序我是一点点摸索出来的,但是如果你掌握了Office组件的编程技巧,加上Delphi强大的功能,一定会使你的程序如虎添翼的。
  以上程序在Windows98、Windows2000,Delphi5.0,Office2000下运行通过。

相关软件

2345加速浏览器官方版

2345加速浏览器官方版 | 56.2MB

2345加速浏览器官方版

新一代2345加速浏览器采用Chromium和IE双内核,主打极速与安全特性。基于Chromium深度定制,引入网页智能预加载技术,访问网页更快速..

QQ浏览器官方正式版

QQ浏览器官方正式版 | 49.67MB

QQ浏览器官方正式版

QQ浏览器秉承TT浏览器1-4系列方便易用的特点,但技术架构不同,交互和视觉表现也重新设计,采用Chromium内核+IE双内核,让浏览快速稳定...

百度浏览器最新版下载

百度浏览器最新版下载 | 13.3MB

百度浏览器最新版下载

q百度浏览器,是一款简洁轻快、智能懂你的浏览器。依靠百度强大的搜索平台,在满足用户浏览网页的基础上,它整合百度体系业务优势,带给用户更方便的浏览方式功能...

UC浏览器官方正式版

UC浏览器官方正式版 | 44.2MB

UC浏览器官方正式版

UC浏览器(UC Browser)是UC Mobile Limited在2004年8月开发的一款软件,分uc手机浏览器和uc浏览器电脑版。UC浏览器是全球使用量最大的第三方手机浏览器...

猎豹浏览器2022最新版下载

猎豹浏览器2022下载 | 45MB

猎豹浏览器2022最新版下载

猎豹安全浏览器对Chrome的Webkit内核进行了超过100项的技术优化,访问网页速度更快。其具有首创的智能切换引擎,动态选择内核匹配不同网页...

360安全浏览器官方版下载

360安全浏览器下载 | 21.4MB

360安全浏览器官方版下载

360安全浏览器拥有全国最大的恶意网址库,采用恶意网址拦截技术,可自动拦截挂马、欺诈、网银仿冒等恶意网址。独创沙箱技术,在隔离模式即使访问****也不会感染...