• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Delphi 操作Word(统计字数) - ╰★张志峰★╮

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

急待解决的问题就是如何用delphi实现word中的统计字数
另外想多了解一些关于操作word的相关内容
比如用ole动态创建的和TWordApplication的偏重点在哪里,有什么不同等等……

 
用OLE的方法控制Word几乎和VBA一样,可以控制Word的所有功能,缺点是没有代码提示,要参照Word的帮助和VBA。

用TWordApplication组件的方式有代码提示,但有很多功能用不了,而且在调用Word的一些方法时,不能省略默认的参数,写参数写到手软。

Word里面的字数统计是特殊的内置对话框,用宏是录制不下来的。

var
    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;

多谢楼上

上面的程序包括空格的统计结果是正确的,但不包含空格的WordDoc.Words.Count跟word里面的结果还是不一样,而且差的很多,能不能再帮忙看看,谢谢

字数统计里关于字数的有三项,一是字数,二是字符数(不计空格),三是字符数(计空格)

Memo1.Lines.Add( \'字数 \'+InttoStr(WordDoc.Words.Count));
是对应 "字数统计 "对话框中 "字数 "那一项,即第一项,意思是 "包括空格的字数 ",不是不包括空格.在我机上测试的时候没有问题啊,回头我再试一试.

Memo1.Lines.Add( \'字符数(包括空格) \'+InttoStr(WordDoc.Characters.Count-WordDoc.Paragraphs.Count));对应的是第三项,即 "包括空格的字符数 "

至于第二项我也不知道怎么求.如果一定要弄的话,我只有一个笨办法就是每个字符判断是不是空格,计出空格数后再从字符总数中扣了.

退出代码:

WordDoc.Saved:=True;     //不保存文件.如果不保存设Saved为真,否则为假.
WordDoc.Close;
WordApp.Quit;
WordDoc:=Unassigned;


回头试了一下字数那里是有问题


试了很久终于搞定了,呵呵。微软的帮助看来还是有些讲得不清楚。下面是完整的代码。

uses   ComObj;

const
    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;

这些结果类的内置对话框好像总要执行一下,否则它的数值就不能保证。

在WordDialog:=WordApp.Dialogs.Item(wdDialogToolsWordCount);的后面加上一句:

    WordDialog.Execute;

就可以了。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi 统计Word文档中的字数发布时间:2022-07-18
下一篇:
Delphi精要发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap