需利用TWordDocument对Word进行简单操作(200分)

  • 主题发起人 主题发起人 天空还下着沙
  • 开始时间 开始时间

天空还下着沙

Unregistered / Unconfirmed
GUEST, unregistred user!
单击按钮,立即生成文档,文档是打开一个已存在的文件,并将其中的指定字符串替换成数据库的若干字段

请给出完整示例,从创建,写入,到释放。

要求文档只读方式打开(下次还要用的)
打开后将文档中指定串替换并立即打印,最好不显示Word程序主窗口,不行就算了。

非常感谢。
 
补充:

Delphi6 + Office2000之Word2000

谢谢赐教。
 
下面三个button分别对应打开word,改内容,存盘退出

procedure TForm1.Button1Click(Sender: TObject);
var
Filename:OleVariant;
begin
WordApplication1.Connect;
WordApplication1.Visible:=True;
Filename:='c:/1.doc';
WordApplication1.Documents.Open(Filename,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
with WordDocument1 do begin
Activate;
While not ADOTable1.Eof do // 将adotable1 里的field1和field2的内容写入worddocument
Range.InsertAfter(ADOTable1['Field1']+';'+ADOTable1['Field2']+'.');
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
WordDocument1.SaveAs;
WordDocument1.Close;
WordDocument1.Disconnect;
WordApplication1.Disconnect;
WordApplication1.Quit;
end;
 
你可以将打开的文档设成模板文件(.dot文件),然后利用模板文件生成word文档。
如果编译有问题试一下在前面Use word97。
var
FileName //文件名称
: string;
i: integer; //临时变量
itemindex //Document的Item的索引。
, TempPlate //Word模板的临时变量。
, newtemplate //Word模板的临时变量。
: OleVariant;

itemindex := 1;
tempPlate := Filename;
newtemplate := false;
WordApplication1.Connect;
WordApplication1.Visible := true;
WordApplication1.Documents.Add(TempPlate, newtemplate); //按照指定的模板,新建一个Word文件。
WordDocument1.ConnectTo(WordApplication1.Documents.Item(itemindex));

procedure openwordfile(Myword: TWordApplication; Myfile: string;IsVisible:Boolean); //打开Word文档函数。
//Myword:文档工程名称;Myfile:word文件名;IsVisible来控制是否显示。
var
FileName, ConfirmConversions, ReadOnly, AddToRecentFiles,
PasswordDocument, PasswordTemplate, Revert,WritePasswordDocument,
WritePasswordTemplate, Format,MatchCase, MatchWholeWord, find1, rep1,
MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward,
Wrap, Replace: OleVariant;
{以上的变量都是TDocument.open函数所必需的,都是系统默认的,详情请参看Word的Help}
{可能会碰到错误的提示,一种情况是Uses一下Office97就可以了。}
begin
Myword.Visible :=IsVisible;
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;
{以上函数为Word实现替换的系统变量,详情请参阅Word的在线帮助。}
begin
Find1 := FindStr; //替换的目的字符串。
Rep1 := RepStr; //替换的源字符串。
MatchCase := false;
MatchWholeWord := true;
MatchWildcards := false;
MatchSoundsLike := false;
MatchAllWordForms := false;
Format := true;
Forward := true;
replace := wdReplaceall;
{if} Mydoc.Range.Find.Execute(find1, MatchCase, MatchWholeWord,
MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward,
Wrap, Format, Rep1, Replace);
end;
//利用数据库替换Word字符串函数(结束)
 
var
findtext, replacewith, startfrom, endto, Filename : OleVariant;
begin
WordApp.Connect;
WordApp.Visible:=True;
Filename:='e:/abc.doc';
//打开
WordApp.Documents.Open(Filename,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
WordDoc.ConnectTo(WordApp.ActiveDocument);
WordDoc.Activate;
//添加数据到结尾
WordDoc.Range.InsertAfter('abc_abc');
//替换数据
startfrom := 0;
endto := 400;
findtext := '根本';
replacewith := 'delphi';
WordDoc.range(startfrom, endto).find.execute(findtext, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, replacewith, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
//保存原文并关闭
WordDoc.Save;
WordDoc.Close;
end;

注意endto要小于文档大小。非常感谢各位支持,特将此代码同时贴出,以助来人
 
to : 天与地

我注明了要word2000呀。对不起了。
 
没有问题,我的编译和运行都是对Word2000,xp都没有问题。
 
多人接受答案了。
 
后退
顶部