文章收藏-FAQ 位置:电脑学习网

我想在 Delphi 程序中直接调用 Word 文档并使用 Word 的功能,这个程序该怎样编? 该用什么控件呢?

  方法一: 
  1) 从 WORD.EXE 中导入 WORD 的 Type Library 
  2) var wd : _Application; 
   wdt : Table; 
   dot1,FileName: OleVariant; 
  begin 
   dot1 := ’c:\abc.dot’; 
   wd := coApplication_.Create; 
   wd.Documents.Add(dot1, EmptyParam); 
   wdt := wd.ActiveDocument.Tables.Item(1); 
   wdt.Cell(1,3).Range.Text := ’Hello!’; 
   //以下是保存和关闭文档及 Word, 可以不关,下面两个例程略过此步。 
   //EmptyParam 用来代替不使用的参数。 
   FileName := ’c:\test.doc’; 
   wd.ActiveDocument.SaveAs(FileName,EmptyParam,EmptyParam, 
   EmptyParam, 
     EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam, 
     EmptyParam, 
     EmptyParam); 
   wd.ActiveDocument.Close(EmptyParam,EmptyParam,EmptyParam); 
   wd.Quit(EmptyParam,EmptyParam,EmptyParam); 
  end; 

 方法二: 
  var 
   Ole: Variant; 
   NewDoc: Variant; 
   DocTable: Variant; 
  begin 
  //方法二的参数可以直接使用 Delphi 的数据类型。其它方法只能使用 OleVariant 类型. 
    Ole := CreateOleObject(’Word.Application’); 
    Ole.Application.Visible := true; 
    NewDoc := Ole.Documents.Add(’C:\abc.dot’); 
    DocTable := NewDoc.Tables.Item(1); 
    DocTable.Cell(1,3).Range.Text := ’Hello!’; 
  //设置Variant对象为UnAssigned来释放该对象的引用。 
    NewDoc := UnAssigned; 
    DocTable := UnAssigned; 
    Ole := UnAssigned; 
  end; 

 方法三:使用 Server 页的 TWordApplication 控件,同理,你可以用里头的所有控件。Ole 为TWordApplication控件名称。
  var 
   NewDoc: Variant; 
   DocTable: Variant; 
  o: OleVariant; 
  begin 
   o := ’c:\abc.dot’; 
   NewDoc := Ole.Documents.Add(o,EmptyParam); 
   DocTable := NewDoc.Tables.Item(1); 
   DocTable.Cell(1,3).Range.Text := ’Hello!’; 
   NewDoc := UnAssigned; 
   DocTable := UnAssigned; 
  end;

    推荐用方法一和方法三。因为方法二不提供类型参数检查,也因为方法二的接口调用效率低。程序中所使用的属性和方法资料可以在 Office 的 VBA 帮助中查到。需要者请在安装 Office 时选择安装 VBA 编程帮助。

     [文章来源:“十万个为什么”电脑学习网]
     [网络地址:http://why100000.com]
     [版权声明:除本站部分特别声明禁止转载的专稿外,其他的文章可以自由转载,但请务必注明出处和原始作者。本站文章版权归文章原作者所有。如果本站转载的文章有版权问题请联系本站,我们会尽快予以更正。]
 

【字体:[大] [中] [小] 【加入收藏】 【发表评论】 【关闭本窗口】

Copyright © “十万个为什么”电脑学习网 2000-2007 陕ICP备06007929号
站务联系:MSN & Email:zhangking2008@gmail.com  QQ:9365822