DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: hfh9801
今日帖子: 14
在线用户: 13
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 swordwind (swordwind) ★☆☆☆☆ -
普通会员
2004/2/26 10:58:22
标题:
Delphi操作Word的问题!请赐教 浏览:1763
加入我的收藏
楼主: 请问谁能提供一下Delphi操作Word的详细资料吗?我现在需要一个控制复制粘贴和撤销尤其是撤销的功能。
----------------------------------------------
-
作者:
男 wenfei (无忌) ★☆☆☆☆ -
盒子活跃会员
2004/2/26 11:10:33
1楼: 20,Q:我想在 Delphi 程序中直接调用 Word 文档并使用 Word 的功能,这个程序该怎样编? 该用什么控件呢?
     A:
   方法一: 
  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 编程帮助。
----------------------------------------------
╬╬Smart programmer use Delphi╬╬
作者:
男 swordwind (swordwind) ★☆☆☆☆ -
普通会员
2004/2/26 11:57:19
2楼: 谢谢,能不能直接提供一下撤消和复制粘贴操作的代码呢?
----------------------------------------------
-
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/2/26 15:46:07
3楼: 学习!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 waterstone (waterstone) ★☆☆☆☆ -
盒子活跃会员
2004/2/26 18:23:01
4楼: 已经收藏!

----------------------------------------------
我来自农村广阔的田野我的每一个动作都很夸张http://waterstone.51r.com
作者:
男 blueice888 (blueice888) ★☆☆☆☆ -
盒子活跃会员
2004/3/9 14:42:27
5楼: 能实现界面上的一致吗?能容易的进行控制吗?我试的时候好象不行啊
----------------------------------------------
-
作者:
男 zhengzi123456 (zhengzi) ★☆☆☆☆ -
普通会员
2004/3/25 20:07:29
6楼: 大虾们,能不能反映在固定WORD 里操作的各行?
尤其是
如果在打开的WORD 文件中,我改变了某一行的某几个字的字体,那么在DELPHI 中我怎么能反映出来?

谢谢大家的支持,我回珍惜您的精髓的!!!!!!!!!!!!!!1
----------------------------------------------
d
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行70.3125毫秒 RSS