📄
字号:
到百度首页
您查询的关键词是:delphi 操作word 释放 文档 。如果打开速度慢,可以尝试快速版;如果想保存快照,可以添加到搜藏。
(百度和网页http://english.zhuaxia.com/item/499560166的作者无关,不对其内容负责。百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面。)
* 我的频道
* 我的收藏
* 频道大全
* 热 文
* 好 看
登录 | 注册 | 工具 | 帮助
科技 | 人文 | 时尚 | 数码 | 生活 | 杂谈 | 体育 | 娱乐 | 军事 | 美女 | 影音 | 汽车 | 财经 | 名人
0 推荐 收藏
delphi操作word
2007-09-13 16:28:03
来自:我爱我家
新建目录...
根目录
一、Delphi程序启动Word
采用CreateOleObjects的方法来启动Word,调用VBA代码,具体实现过程为:
首先使用GetActiveOleObject('Word.Application')判断当前内存中是否存在Word程序,如果存在,
则直接连接,如果没有Word程序,则使用CreateOleObject('Word.Application')启动Word
二、Delphi程序新建Word文稿
格式:WordDocuments.Add(Template,NewTemplate,DocumentType,Visible)
Template: 使用模板的名称,
NewTemplate: 新建文档的类型,True表示为模板,False表示为文档
DocumentType: 文档类型,默认为空白文档
Visible: 打捞的窗口是否可见
举例:Doc_Handle:=Word_Ole.Documents.Add(Template:='C:\Temlate.dot',NewTemplate:=False);
三、Delphi程序打开Word文稿
格式:WordDocuments.Open(FileName,ConfirmConversions,ReadOnly,PassWordDocument,
PasswordTemplate,Revent,WritePasswordDocument,WritePassWordTemplate,
Format,Encoding,Visible)
FileName: 文档名(包含路径)
Confirmconversions: 是否显示文件转换对话框
ReadOnly: 是否以只读方式打开文档
AddToRecentFiles: 是否将文件添加到"文件"菜单底部的最近使用文件列表中
PassWordDocument: 打开此文档时所需要的密码
PasswordTemplate: 打开此模板时所需要的密码
Revert: 如果文档已经,是否重新打开文档
WritePasswordDocument: 保存对文档更改时所需要的密码
WritePasswordTemplate: 保存对模板进行更改时所需要的密码
Format: 打开文档时所需使用的文件转换器
Encoding: 所使用的文档代码页
Visible: 打开文档的窗口是否可见
举例:
Doc_Handle:=Word_Ole.Documents.open(FileName:=Doc_File,ReadOnly:=False,
AddToRecentFiles:=False);
四、Delphi程序保存Word文稿
格式:WordDocuments.SaveAs(FileName, FileFormat, LockComments, Password,
AddToRecentFiles, WritePassword, ReadOnlyRecommended,
EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData,
SaveAsAOCELetter)
FileName: 文件名。默认为当前文件夹和文件名。
FileFormat 文档保存的格式。
LockComments 如果为 True,则此文档只允许进行批注。
Password 打开文档时的口令。
AddToRecentFiles 如果为True,则将文档添至"文件"菜单中最近使用的文档列表中。
WritePassword 保存对文档的修改所需的口令。
ReadOnlyRecommended 如果为 True,在每次打开文档时,Word 将建议用户采用只读方式。
EmbedTrueTypeFonts 如果为 True,则将文档与 TrueType 字体一起保存。
SaveNativePictureFormat 如果为 True,则从其他系统平台(例如 Macintosh)导入的图形仅保存其 Windows 版本。
SaveFormsData 如果为 True,则将窗体中用户输入的数据存为一条数据记录。
SaveAsAOCELetter 如果文档包含一个附加,当此属性值为 True 时,将文档存为一篇 AOCE 信笺(同时保存邮件)。
举例:
Word_Ole.Documents.SaveAs(FileName:=Doc_File,FileFormat=wdFormatDocument,
AddToRecentFiles=False);
五、从数据库读取文件到本地硬盘和从本地硬盘读取文件到数据库
在数据库上使用Image二进制字段保存,使用Stream流的方式。
创建文件流:
Word_FileStream:=TFileStream.Create(Target_Name,fmOpenWrite or fmCreate);
Word_FileStream.Position:=0;
保存到数据库的Image字段:
TBlobField(AdoQuery1.FieldByName(Column_Name)).SaveToStream(Word_FileStream);
从数据库读取文件到本地硬盘:
TBlobField(ADOQuery1.FieldByName(Column_Name)).loadfromStream(Word_FileStream);
释放文件流:
Word_FileStream.Free;
六、全局消息的定义
因为word和Delphi程序是两个软件,相互之间通讯比较麻烦,所以使用全局消息的方法进行。
全局消息必须首先注册,Windows返回系统空闲的消息号,当注册的消息相同时,
Windows系统返回同一个值,这样就保证了使用这个消息号在两个程序之间通讯。
定义消息的办法:
szMessageString: pchar = 'XIDIAN_11_Stone';
FMyJoinMessage := RegisterWindowMessage(szMessageString);
发送消息的方法:
SendMessage(对方句柄,消息,消息附带短变量,消息附带长变量)
七、Delphi程序接收消息的方法
Delphi接收消息有两种,一是重载特定消息,二是重载WndProc函数,在里面选择相应消息进行处理。
法一,每次只能处理一条消息,而法二能够同时处理多条消息。
对于法二,声明如下:
procedure WndProc(var Message: TMessage);override
必须注意,使用时需要在处理完自己消息处理后继承WndProc(Message)函数,否则系统会崩溃!
八、Word中Combo对话框的动态生成以及Change事件
建立类模块Combohander,在内部定义事件
Public WithEvents ComboBoxEvent As Office.CommandBarComboBox
定义Combo控件产生事件的模块
Dim ctlComboBoxHandler As New ComboBoxHandler
产生Combo对话框
Set Cbo_ChooseDoc = CommandBars("添加的菜单").Controls.Add(Type:=msoControlComboBox, Temporary:=True)
进行文件句柄设置,以产生Combo_Change事件
Set ctlComboBoxHandler.ComboBoxEvent = Cbo_ChooseDoc
产生事件后,在类模块Combohander内选择ComboBoxEvent的Change事件,即可书写事件代码
Sub ComboBoxEvent_Change(ByVal Ctrl As Office.CommandBarComboBox)
九、一些Word的事件
VBA代码中处理的Word事件有:Document_Close
Application事件中需要处理的有:DocumentBeforeClose,DocumentChange。
Document_Close:事件在文档关闭时产生事件
DocumentBeforeClose:在文档被关闭以前先于Word判断文档是否保存,给出相应提示并进行相应处理。
DocumentChange:文档切换,在文档从自己修改的文稿和其他人修改的文稿之间切换产生事件,
主要处理设置文档权限等。
在Dephi 5中提供了一组Servers组件,实现了与Office的无缝结合
1、在当前程序目录下建立以标题字段命名的Word文件
exepath:=application.ExeName;
for index:=1 to length(exepath) do
if exepath[index]='\' then
i:=index;
exepath:=copy(exepath,1,i);
doc_file:=exepath+mc+'.doc';
以标题字段“mc”命名Word文件
try
Wordapplication1.connect;
except
messagedlg('没有安装Word',mterror,[mbok],0);
abort;
end;
Wordapplication1.Caption := 'XX计划书';
Wordapplication1.visible := true;
Worddocument1.activate;
2、设置纸张大小
Wordapplication1.ActiveDocument.PageSetup.PageWidth:=XXX;
Wordapplication1.ActiveDocument.PageSetup.PageHeight:=XXX;
Wordapplication1.ActiveDocument.PageSetup.LeftMargin := XX;
//设置左边距
Wordapplication1.ActiveDocument.PageSetup.rightMargin := XX;
//设置右边距
3、插入页码
var fpage,pagea:olevariant;
fpage:=true;
pagea:=wdAlignPageNumberCenter;
Wordapplication1.activedocument.sections.item(1).Footers.item(1).PageNumbers.Add(pagea,fpage);
4、设置页面横向打印
s:=Wordapplication1.selection.start;
e:=Wordapplication1.selection.start;
aa:=wdSectionBreakNextPage;
Wordapplication1.ActiveDocument.Range(s,e).InsertBreak(aa);
Wordapplication1.Selection.Start:=Wordapplication1.Selection.Start + 1;
s:=Wordapplication1.Selection.start;
e:=Wordapplication1.ActiveDocument.Content.End_;
Wordapplication1.ActiveDocument.Range(S,e).PageSetup.Orientation:=wdOrientLandscape;
5、设置字体、字号
Wordapplication1.Selection.Font.Size:=18;
Wordapplication1.Selection.Font.Name := '黑体';
Wordapplication1.Selection.TypeParagraph;
Wordapplication1.Selection.ParagraphFormat.Alignment:= wdAlignParagraphCenter;
Wordapplication1.Selection.TypeParagraph;
Wordapplication1.Selection.TypeText(dbedit4.text);
//标题
Wordapplication1.Selection.Font.Size := 14;
Wordapplication1.Selection.Font.Name := '宋体';
Wordapplication1.Selection.TypeParagraph;
Wordapplication1.Selection.TypeParagraph;
Wordapplication1.Selection.ParagraphFormat.Alignment := wdAlignParagraphJustify;
Wordapplication1.Selection.TypeText(' '+trim(dbmemo1.text));
//正文
... ...
6、插入表格
Wordapplication1.Selection.Font.Size :=10;
adoquery2.Active:=false;
adoquery2.active:=true;
doc:=Wordapplication1.activedocument;
counts:=adoquery2.RecordCount;
//记录数决定表格的行数
t:=doc.tables.Add(Wordapplication1.selection.range,counts+1,5);//5列
t.cell(1,1).range.text:= '单位';
t.Cell(1,1).Width:=120;
t.cell(1,1).range.Paragraphs.Alignment:= wdAlignParagraphCenter;
t.cell(1,2).range.text:= '姓名';
... ...
//依次写入其他字段的表头
for i:=2 to counts+1 do
begin
t.cell(i,1).range.text:=adoquery2.field
byname('dw').asstring;
t.Cell(i,1).Width:=120;
t.cell(i,1).range.Paragraphs.Alignment:=
wdAlignParagraphCenter;
t.cell(i,2).range.text:=adoquery2.field
byname('xm').asstring;
... ...
Adoquery2.next;
End;
使用Dephi将Word与数据库结合,实现了用户文档的自动生成,大大地方便了用户。
返回页首
分享到饭否 发给朋友 发给朋友 转到小组 转到小组 (打标签) (打标签) 收藏 已藏 推荐 已荐
相关文章
? RE: Delphi 中控制 Word,xml,dll 等操作
? 函数,SendKeys,Delphi,概述
? Delphi版SynFlood源码
? 在Delphi中实现类似Oracle中to_date的格式化日期转换函数
? Delphi代码标准文档
? RE: Delphi制作DLL
? 第二章 Delphi面向对象的编程方法
? Delphi中类的运行期TypeInfo信息结构说明
? DELPHI常用函数集及简要范例
? Delphi下AOP技术
? 再谈Delphi vs VC++(非常精彩)
? 黑客基地Delphi程序设计
? 在Delphi中利用钩子技术秘密记录QQ账号密码
? The Business Case for Delphi and Wikis
? 谈Delphi编程中“流”的应用
最新推荐
文章 推荐人
?
一款自动转换为英文缩略名的插件
?
极客饰品大全[超多图]
?
爱你如诗美丽
?
别要小肚腩 男士腹部减肥健美六法
?
陈紫涵超性感写真
?
为什么“农民”成了骂人的代名词
?
我,要控制我自己.
?
超冷的分手笑话 (豆瓣 我们爱讲...
?
几点理财体会
?
新时代美女九大原则
?
福州虚拟警察在重点网站论坛上岗
?
博客营销——颠覆性革命营销
?
人生的“战略自由度”
?
大连模特学院女大学生自拍写真
?
缅甸共和国卫士枪杀日本记者
?
如何让自己集中精力
?
电台电视台频率最高的经典背景音乐...
?
豆瓣用户超过888888
?
斯托克代尔悖论
?
“封建”概念还要滥用多久 / 萧...
?
肉价上涨所引发的联想
?
口语 -- 冷静,别发火
?
中移动怎麽了?
?
写作词汇大全之个人简历
?
女人不幸福的十二个开始(图)
?
爱的五线谱
?
大学成功不可忽略的7点
?
西藏驴行.7.3.徒步走珠峰.珠...
?
货币战争
?
阿里妈妈的蓝海到底有多蓝?
?
悖论:思维的魔方
?
一块口香糖玩出的花样
?
球球异国国庆纪念(国庆分享)
?
给自己犯错的机会
?
马云在赢在中国的十句真话
?
月光每日网摘 [2007-10-...
?
阻碍你学习进步的七种想法
?
适合小空间的床
?
我们不侵权,我们是粉红的
?
转:快速平方根算法
?
张功耀 : 闲话“放心药”
?
只言片语(7)
?
日记 [2007年09月20日]
?
不得不赞——周杰伦《不能说的秘密...
?
河北移动欢迎您
?
一定要提防人生路上的5大陷阱
?
无比残忍的活熊取胆
?
世上最经典的15句话
?
防止车被拖车拖走的方法
?
为梦想,暂别职场又何妨?
抓虾推荐
01 不识字的好处
02 秀才 : “营养学家”林光常的倒掉
03 对王莹同学的回应:并请福州大学的王健正面回答我的以下疑问
04 实拍我军红星级导弹艇火炮实弹打靶!
05 难以置信:美军的炮弹制造流程
06 审时度势的福田康夫
07 无核化目标仍然任重而道远
08 关淑怡6岁儿子曝光 简直就是曾志伟翻版
09 港难长期独秀 股市或已见顶
10 《狮子王》导演办中式婚礼 迎娶孔子76代孙(图)
隐私保护 | 关于抓虾 | 抓虾日记 | 加入我们 | 市场合作 | 帮助信息
? 2007, 版权所有 ZHUAXIA.COM | 京ICP备06030466号
loading...
analysing...
体验 如果你不是会员,用访客身份来体验一下吧 登录 如果你是会员,请先登录 注册 快速注册抓虾,开始享受我们的服务
这个功能只有抓虾的会员才能使用……
登录 如果你是会员,请先登录 注册 快速注册抓虾,开始享受我们的服务
很抱歉,发生了错误
小错误:
新手设置
花一分钟的时间,为您自己定制一个只属于自己的个性化阅读空间!
你的博客地址:
抓虾可以根据你的博客地址,将其中你朋友的博客直接订阅
你感兴趣的话题:
抓虾会给你推荐这些话题的精华内容
* IT科技
* 美图
* 新奇
* 杂谈
* 人文
* 美食
* 艺术设计
OPML文件:
如果你以前使用过RSS阅读器,抓虾可以帮你导入OPML
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -