急待解决的问题就是如何用delphi实现word中的统计字数
另外想多了解一些关于操作word的相关内容
比如用ole动态创建的和TWordApplication的偏重点在哪里,有什么不同等等……大号没分了,只好找出尘封已久的马甲(还是为了顶群星闪耀贴注册的,呵呵)
另外想多了解一些关于操作word的相关内容
比如用ole动态创建的和TWordApplication的偏重点在哪里,有什么不同等等……大号没分了,只好找出尘封已久的马甲(还是为了顶群星闪耀贴注册的,呵呵)
var
ItemIndex :OleVariant;
FileName, ConfirmConversions, ReadOnly, AddToRecentFiles,
PasswordDocument, PasswordTemplate, Revert,
WritePasswordDocument, WritePasswordTemplate, Format: OleVariant;
begin
WordApplication1.Connect;
try
ItemIndex := 1;
FileName := 'H:\工作报告\下阶段计划.doc'; //参数赋值
ConfirmConversions := False;
ReadOnly := False;
AddToRecentFiles := False;
PasswordDocument := '';
PasswordTemplate := '';
Revert := True;
WritePasswordDocument := '';
WritePasswordTemplate := '';
Format := wdOpenFormatDocument;
WordApplication1.Documents.Openold( FileName, ConfirmConversions,
ReadOnly, AddToRecentFiles, PasswordDocument, PasswordTemplate,
Revert, WritePasswordDocument, WritePasswordTemplate, Format ); WordDocument1.ConnectTo(WordApplication1.Documents.Item(ItemIndex));
ShowMessage(INttostr(WordDocument1.Characters.Count));
ShowMessage(INttostr(WordDocument1.Words.Count));
finally
WordApplication1.Disconnect;
end;
end;
WordApp,WordDoc:OleVariant;begin
WordApp:=CreateOleObject('Word.Application');
WordDoc:=WordApp.Documents.Open('f:\Test.Doc');
WordApp.Visible:=True;
Memo1.Lines.Add('字数'+InttoStr(WordDoc.Words.Count));
Memo1.Lines.Add('字符数(包括空格)'+InttoStr(WordDoc.Characters.Count-WordDoc.Paragraphs.Count));
//
// 退出Word
//
end;
是对应"字数统计"对话框中"字数"那一项,即第一项,意思是"包括空格的字数",不是不包括空格.在我机上测试的时候没有问题啊,回头我再试一试.Memo1.Lines.Add('字符数(包括空格)'+InttoStr(WordDoc.Characters.Count-WordDoc.Paragraphs.Count));对应的是第三项,即"包括空格的字符数"至于第二项我也不知道怎么求.如果一定要弄的话,我只有一个笨办法就是每个字符判断是不是空格,计出空格数后再从字符总数中扣了.退出代码:WordDoc.Saved:=True; //不保存文件.如果不保存设Saved为真,否则为假.
WordDoc.Close;
WordApp.Quit;
WordDoc:=Unassigned;
WordApp:=Unassigned;
wdDialogToolsWordCount = $000000E4;var
WordApp,WordDoc,WordDialog:OleVariant;begin
WordApp:=CreateOleObject('Word.Application');
WordDoc:=WordApp.Documents.Open('E:\Test.Doc');
// WordApp.Visible:=True;
WordDialog:=WordApp.Dialogs.Item(wdDialogToolsWordCount);
Memo1.Lines.Add('字数:'+InttoStr(WordDialog.Words));
Memo1.Lines.Add('字符数(不计空格)'+InttoStr(WordDialog.Characters));
Memo1.Lines.Add('字符数(计空格)'+InttoStr(WordDialog.CharactersIncludingSpaces));
WordDoc.Saved:=True;
WordDoc.Close;
WordApp.Quit;
WordDialog:=Unassigned;
WordDoc:=Unassigned;
WordApp:=Unassigned;
end;
1
11111111
3333333333 我在3的后面加了个空格,正常应该报19和20(包含空格),但上面的方法就多报了许多
我也是在试过我要跑的文件后不行才一步步找出来的,小的文件都可以
搞不懂为什么在你机上的结果会不同,不知是不是office版本不同的原因。
我在另一台2000+office2000的机器上试也是一样不行,它好像把回车也算进去了你有没有邮箱,我发一个我要跑的正式文件给你
字符数(不计空格)14202
字符数(计空格)16660
Thanks a lot!