问一个关于 delphi 操作word ,还有 olecontainer 内嵌 Word 的问题 :(

FlyDayDream 2005-05-17 12:34:57
1。问一个关于 delphi 操作word ,

var
oledoc,oleapp:variant;

oleapp:=createoleobject('word.applicaiton')

oledoc:=oleapp.openfile(filename);

我想知道,oledoc 能访问word 的 属性 ,以及能实现的功能,

如果不好说,有例子也可以,没有delphi,其它语言的也可以。

2。还有 olecontainer 内嵌 Word 的问题

a. oleContainer.loadfromFile()

b.oleContainer.loadfromstream()

我想知道 a 和 b 两种方法访问的word文档的属性及方法?

最主要的是实现 查找,替换,即可!

太多的话,可以概述,以及一些 支离代码都可以哦

谢谢!


flydaydream@163.com
...全文
361 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyguo 2005-05-17
  • 打赏
  • 举报
回复
打开word:
var wrd=new ActiveXObject("Word.Application")
加载模板:
wrd.Documents.Open("D:\\QianZY\\Document\\外贸\\单证模版\\汇票.dot")
得到书签:
var bm=wrd.ActiveDocument.Bookmarks
在特定书签处填入数据:
bm.Item("openingdate").Range.Text="<%=strTemp%>"
得到表格:
var ContractTable=wrd.ActiveDocument.tables(1)
在表格中填入数据:
ContractTable.Rows(1).Cells.Item(9).Range.InsertAfter("总体积 TOTAL MEANS (CBM)")
在表格中插入一行:
var newRow = ContractTable.Rows.Add(ContractTable.Rows(2))
在行中填入数据:
newRow.Cells.Item(1).Range.InsertAfter("<%=arrDetail[i][0]%>")
得到行数:
ContractTable.Rows.Count
lyguo 2005-05-17
  • 打赏
  • 举报
回复
以下是我找到的一段控制WORD文档的程序,谨供参考。希望能提供一些思路。更详细的情况
最好能去看一下Word的关于编程方面的帮助,应该是没有问题的。
procedure TForm1.Button1Click(Sender: TObject);
begin
WordApplication1.Connect;
WordApplication1.Visible := True;
visible:=true;
// wordapplication1.Documents.Add()
WordApplication1.Documents.Add(EmptyParam,EmptyParam);
WordDocument1.Connect;
WordApplication1.ActiveWindow.View.Type_:= wdNormalView;
WordApplication1.Selection.Font.Name :='黑体';
WordApplication1.Selection.Font.Size := 16;
WordApplication1.Selection.ParagraphFormat.Alignment := wdAlignParagraphCenter;
WordApplication1.Selection.TypeText('自定义表头内容');
WordApplication1.Selection.TypeParagraph;
WordApplication1.Selection.TypeParagraph;
WordApplication1.Selection.Font.Name := '宋体';
WordApplication1.Selection.Font.Size :=12;
WordApplication1.Selection.ParagraphFormat.Alignment := wdAlignParagraphRight;
WordApplication1.Selection.TypeText('日期'+formatdatetime('yyyy"年"mm"月"dd"日"',now));
WordApplication1.Selection.TypeParagraph;
WordApplication1.Selection.TypeParagraph;//回车
WordApplication1.Selection.ParagraphFormat.Alignment := wdAlignParagraphLeft;
end;
lyguo 2005-05-17
  • 打赏
  • 举报
回复
可以控制从数据库中取文字添加到Word模板中,可以操作word中的表。
可以向word贴图。
你应该在模板中设定标志字符,然后用系统来查找这些标志字符,然后从数据库中取数据进行替换。
可以多参看一下Office的在线帮助,多试一下吧。
先告诉你如何替换文字吧。注意:要uses Word97。procedure openwordfile(Myword:TWordApplication;Myfile:string);//打开Word文档函数。
//Myword:文档工程名称;Myfile:word文件名。
var
ItemIndex :OleVariant;
FileName, ConfirmConversions, ReadOnly, AddToRecentFiles,
PasswordDocument, PasswordTemplate, Revert,
WritePasswordDocument, WritePasswordTemplate, Format,
MatchCase,MatchWholeWord,find1,rep1,
MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward,
Wrap, Replace : OleVariant;
begin
Myword.Visible := false;
FileName :=MyFile;
confirmConversions := False;
ReadOnly := False;
AddToRecentFiles := False;
PasswordDocument := '';
PasswordTemplate := '';
Revert := True;
WritePasswordDocument := '';
WritePasswordTemplate := '';
Format := wdOpenFormatDocument;
myWord.Documents.Open( FileName, ConfirmConversions,
readOnly, AddToRecentFiles, PasswordDocument, PasswordTemplate,
Revert, WritePasswordDocument, WritePasswordTemplate, Format );
myword.Visible:=false;
end;
//打开Word文档函数(结束)
Procedure RepData(MyDoc:TWordDocument;FindStr,RepStr:string);//利用数据库替换Word字符串函数
//FindStr:被查找的字符串。RepStr:要替换的字符串。
var
MatchCase,MatchWholeWord,find1,rep1,Format,
MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward,
Wrap, Replace : OleVariant;
begin
Find1:=FindStr;
Rep1:=RepStr;
MatchCase:=false;
MatchWholeWord:=true;
MatchWildcards:=false;
MatchSoundsLike:=false;
MatchAllWordForms:=false;
Format:=true;
Forward:=true;
replace:=wdReplaceall;
// WordApplication2.StartOfdocument; //到文首
{if} Mydoc.Range.Find.Execute( find1, MatchCase, MatchWholeWord,
MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward,
Wrap, Format, Rep1, Replace );{ then showmessage('OK!!!!')}
{else showmessage('finish!!');}
end;
以下是根据模板新建一个Doc文件。
FileName := Opendialog1.FileName;
itemindex:=1;
tempPlate:=Filename;
newtemplate:=false;
WordApplication1.Connect;
WordApplication1.Visible:=true;
WordApplication1.Documents.Add(TempPlate,newtemplate);
WordDocument1.ConnectTo(WordApplication1.Documents.Item(itemindex));

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧