怎样打开doc文件?(50分) ( 积分: 50 )

  • 主题发起人 主题发起人 wood993903
  • 开始时间 开始时间
W

wood993903

Unregistered / Unconfirmed
GUEST, unregistred user!
我想实现这样一个功能,当我点击一个按钮,就打开一个doc文件,然后用一个指定的字符串代替doc文件中指定的字符串,请问该如何实现?
 
函数开始
function ReplaceWord(FRange: OleVariant; const oldStr,
newStr: WideString): OleVariant;
begin
try
FRange.Find.Text := oldStr;
except
end;
try
FRange.Find.Replacement.Text := newStr;
except
end;
try
FRange.Find.Forward := true;
except
end;
try
FRange.Find.Wrap := 1;
except
end; //'wdFindContinue := 1;
try
FRange.Find.Format := false;
except
end;
try
FRange.Find.MatchCase := false;
except
end;
try
FRange.Find.MatchWholeWord := false;
except
end;
try
FRange.Find.MatchByte := false;
except
end;
try
FRange.Find.MatchWildcards := false;
except
end;
try
FRange.Find.MatchSoundsLike := false;
except
end;
try
FRange.Find.MatchAllWordForms := false;
except
end;
Result := FRange.Find.Execute(Replace := 2); //'wdReplaceAll:=2;
end;
函数结束
调用
var
wordApp,doc1,FRange:olevariant;
begin
wordApp=CreateOleObject('Word.Application');
wordApp.DisplayAlerts :=0;// wdAlertsNone = 0
wordApp.Visible :=true;
doc1:=wordApp.Documents.open(cellCwfxFile);
FRange:=doc1.Range();
ReplaceWord(FRange,'oldStr','newStr');
end;
 
var
file:pchar;
s:array[0..50] of char;
begin
file:=pchar('c:/123.doc');
try
ShellExecute(0,nil,helpfile,nil,nil,SW_SHOWMAXIMIZED);
except
ShowMessage(打开文件出错);
exit;
end;
 
我的意思是:先在doc文件中全文查找Edit1.Text的内容,如果存在用Edit1.Text的内容代替Edit2.Text。
 
FRange.text=edit2.text
 
函数写好,调用方法也写给你了,你还不会,那你会delphi吗,难说了.
 
//filename 指定文件名
//cslist 替换参数,传入的格式是 KEY1=value1,key2=value2
如果不会可以学习一下tstringlist.values[]的用法
FUNCTION CreateMb(CONST Filename, cslist: STRING): boolean;
VAR
vWord, vDoc, vRange: Variant;
sText, sReplace : STRING;
lReturn : Boolean;
i : integer;
ts : tstrings;
BEGIN
vWord := CreateOleObject('Word.Application'); //创建Word线程
ts := tstringlist.Create;
TRY
//打开要操作的文件
vWord.visible := false;
vDoc := vWord.Documents.Open(Filename);
vDoc.Select; //选取中整个文档
vRange := vDoc.Range; //替换范围

ts.CommaText := cslist;
FOR i := 0 TO ts.Count - 1 DO
BEGIN
sText := '$$' + uppercase(ts.Names) + '$$';
sReplace := uppercase(ts.Values[ts.Names]);
lReturn := True;
WHILE lReturn DO
BEGIN //找到并替代成功则返回 True 共11个参数
lReturn := vDoc.Range.Find.Execute(sText, , , , , , , , ,
sReplace, True);
application.ProcessMessages;
END;
END;
result := true;
FINALLY
ts.Free;
vDoc.Close(true); //关闭文并保存
vWord.Quit(true); //退出Word
END;
END;
 

Similar threads

后退
顶部