当前位置:主页>仓库管理软件> 列表

delphi+word处理报表的问题 找常用财务软件

销售管理软件版1楼: 让Word替换标记字符串要使用WordDocument.Range.Find.Execute
下面的例子中用“Delphi”替换了“VB”:
var
FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike,
MatchAllWordForms, Forward, Wrap, Format, ReplaceWith, Replace: OleVariant;
begin
FindText := ''VB'';
MatchCase := False;
MatchWholeWord := True;
MatchWildcards := False;
MatchSoundsLike := False;
MatchAllWordForms := False;
Forward := True;
Wrap := wdFindContinue;
Format := False;
ReplaceWith := ''Delphi'';
Replace := True;

[red]WordDocument.Range.Find.Execute( FindText, MatchCase, MatchWholeWord,
MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward,
Wrap, Format, ReplaceWith, Replace );[/red]
红色的代码部分是的替代word中特定字符的,但是word替代的时候是有字数限制的,好像是500个字符,超出之后会出错,不知道有没有什么设置可以改掉这个限制

2楼: 我现在的程序判断长度,阶段replace的,但是截断汉字的过程中,发现乱码,可能是汉字被半个截断的问题,有没有其他办法 如常用财务软件

3楼: 没人回答?

4楼: 失望中

5楼: 简单的我给你写个函数吧。
FSection=true是页眉的,注意。s
procedure Word2000ReplaceText(FSection: Boolean;
OldText, ReplaceText: String);
var
OleForword,OleRelaceOption:OleVariant;
OleFindText,OleReplaceText:OleVariant;
begin
OleForword:=wdForward;
OleRelaceOption:=wdReplaceAll;
OleFindText:=OldText;
OleReplaceText:=ReplaceText;
if FSection then
Word2000.Selection.Sections.Item(1).Headers.Item(1).Range.Find.ExecuteOld(
OleFindText,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
OleForword, EmptyParam,EmptyParam,OleReplaceText,OleRelaceOption)
else
Word2000.Selection.Range.Find.ExecuteOld(OleFindText,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,OleForword, EmptyParam,EmptyParam,
OleReplaceText,OleRelaceOption);
end;

6楼: 如果出现字符问题,
不要使用替代的字符,可以使用替代标签,或者使用单元格。长度无限。
或者使用标签,一点一点字符刷新,办法多多多。

销售管理软件版7楼: 楼上的,不是很理解,能不能详细解释下,你才用的是ole的模式做的把

8楼: 问题已解决,谢谢大家!