Delphi 统计Word文档中的字数
急待解决的问题就是如何用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;
就可以了。
Delphi 统计Word文档中的字数的更多相关文章
- C# 在Word文档中生成条形码
C# 在Word文档中生成条形码 简介 条形码是由多个不同的空白和黑条按照一定的顺序组成,用于表示各种信息如产品名称.制造商.类别.价格等.目前,条形码在我们的日常生活中有着很广泛的应用,不管是在图书 ...
- C# 提取Word文档中的图片
C# 提取Word文档中的图片 图片和文字是word文档中两种最常见的对象,在微软word中,如果我们想要提取出一个文档内的图片,只需要右击图片选择另存为然后命名保存就可以了,今天这篇文章主要是实现使 ...
- 把word文档中的所有图片导出
把word文档中的所有图片导出 end
- aspose.words复制插入同一word文档中的某个页面
选择word模板 Document doc = new Document(Server.MapPath("~\\templet") + "\\" + name. ...
- Aspose.Words:如何添加另一个WORD文档中的Node对象
原文:Aspose.Words:如何添加另一个WORD文档中的Node对象 首先看一段代码,这段代码意图从docSource中获取第一个表格,并插入docTarget的末尾: , true); doc ...
- C# 在word文档中复制表格并粘帖到下一页中
C# 在word文档中复制表格并粘帖到下一页中 object oMissing = System.Reflection.Missing.Value; Microsoft.Offi ...
- 使用Java POI来选择提取Word文档中的表格信息
通过使用Java POI来提取Word(1992)文档中的表格信息,其中POI支持不同的ms文档类型,在具体操作中需要注意.本文主要是通过POI来提取微软2003文档中的表格信息,具体code如下(事 ...
- C# Word文档中插入、提取图片,文字替换图片
Download Files:ImageOperationsInWord.zip 简介 在这篇文章中我们可以学到在C#程序中使用一个Word文档对图像的各种操作.图像会比阅读文字更有吸引力,而且图像是 ...
- 处理Word文档中所有修订
打开现有文档进行编辑 若要打开现有文档,您可以将 Word类实例化,如以下 using 语句所示. 为此,您可以使用Open(String, Boolean) 方法打开具有指定 fileName 的字 ...
随机推荐
- 终端工具putty访问vmware centos系统
当我们安装好后,可以通过shell来输入命令行来操作centos,当我们一般为了方便可以用终端进行远程连接虚拟机. 软件下载:http://www.chiark.greenend.org.uk/~sg ...
- Linux系统root密码修改
重启系统. 进入系统引导界面: 按下e键: 选择第二项,内核启动参数设置,按下e键: 在结尾处,输入数字 1或者 英文 " single",再回车: 按下b键启动,此时以单用户模式 ...
- Android-ContentProvider理解操作系统的多媒体
在多年以前,我做一款音乐播放器,要把很多.mp3文件,放置在自己新建的文件夹里面,然后去读取这个新建的文件夹里面的音乐列表,现在想想是多么的无知: 因为只要往手机里面放入.mp3文件,系统会自动检测, ...
- [LeetCode 题解]: Container With Most Water
Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). ...
- HBase介绍(4)---常用shell命令
进入hbase shell console$HBASE_HOME/bin/hbase shell如果有kerberos认证,需要事先使用相应的keytab进行一下认证(使用kinit命令),认证成功之 ...
- [IE bug] ajax请求 304解决方案
最近和筒子们做了个校园电台,进去之后会自动播放歌曲,每首放完了的话会随机get新的json,然后再播放下一首 整体做成了命令行的风格,在最后输入next,start等命令来操作,5+M/s校园网+W级 ...
- WPF 实现INotifyPropertyChanged .Net Framework 4.5
自己动手写了一个基类来实现INotifyPropertyChanged接口,以后可以直接使用. using System.ComponentModel; using System.Runtime.Co ...
- C#中的线程
1.线程Thread 多线程的意义在于一个应用程序中,有多个执行部分可以同时执行:对于比较耗时的操作(例如io,数据库操作),或者等待响应(如WCF通信)的操作,可以单独开启后台线程来执行,这样主线程 ...
- 来到cnblong dayone
以前懒得做笔记,csdn上有些小随笔,但是感觉csdn上的广告和积分下载越来越无法忍受了.现在转到cnblog.希望以后能够多写一些随笔吧.也算是一种坚持.听说90天可以养成一种习惯,那么就从现在开始 ...
- adb和adbd详尽分析
https://blog.csdn.net/viewsky11/article/details/53889143