你可以在word表格中要插入标记,再调用word中的find方法得到具体位置,但要注意
每个标记的唯一性,再将数据用find方法直接替换即可;
对于图片的替换,要将word方法中的ReplaceWith参数设置为"^C",先将图片内容送到
剪粘板,再用find方法替换。
这是我写的一个函数,我用的是Delphi自带的server控件,用法和用ole方法创建
的差不多,只是参数传递时多了点;
procedure TMainForm.MyReplace(zdname:string;NewReplace:string);
var
FindText, MatchCase, MatchWholeWord, MatchWildcards,
MatchSoundsLike, MatchAllWordForms, MyForward, Wrap,
Format, ReplaceWith, Replace, MatchKashida,
MatchDiacritics, MatchAlefHamza, MatchControl:OleVariant;
NewRange:OleVariant;
begin
FindText:=zdname ; // '{xmzd}';
MatchCase:=false;
MatchWholeWord:=false;
MatchWildcards:=false;
MatchSoundsLike:=false;
MatchAllWordForms:=false;
MyForward:=true;
Wrap:=0;
Format:=false;
ReplaceWith:=NewReplace;//'海腾科技';
Replace:=2;
MatchKashida:=false;
MatchDiacritics:=false;
MatchAlefHamza:=false;
MatchControl:=false;
if ReplaceWith='^c' then
begin
Replace:=0;
DBImgFishImg.CopyToClipboard; //将图片字段粘到剪粘板,再传入Word
end;
WordDocument.Range.Find.ClearFormatting ;
NewRange:=WordDocument.Range;
NewRange.Find.Execute( //执行替换
FindText, MatchCase, MatchWholeWord, MatchWildcards,
MatchSoundsLike, MatchAllWordForms, MyForward, Wrap,
Format, ReplaceWith, Replace, MatchKashida,
MatchDiacritics, MatchAlefHamza, MatchControl);
try
if ReplaceWith='^c' then NewRange.paste; //如果是图片从剪粘板传入
except
end;
调用此函数时注意判断要替换的内容;
MyReplace('{xmzd}','字段中的内容:'+Table.Fields.Fields.AsString);
//替换字符型内容
MyReplace('{tupianzd}','^c'); //替换图片型