编程词典
明日图书
明日软件
用户注册
用户登录
站内
  当前位置:编程词典服务网 >> 编程词典社区论坛 >> 通过Word统计字符数
  · 通过Word统计字符数

用户:  明日科技
发帖:  417 篇
作品:  1 个
回复:  2 篇
技术分:  805 分
等级:  
注册:  2009-09-07 06:37:23



发表于:2010-06-10 17:11:14
          楼主

通过_Document类的ComputeStatistics方法不禁可以获得Word文档的段落数,而且可以获得文档中的字符数量,所以也可以通过将其他文件的文本读取出来,通过Word文档进行字符统计,下面就通过实例来进行介绍,步骤如下:

1)创建一个基于对话框的应用程序,设置对话框标题为“统计字符数量”。

2)向对话框中添加6个静态控件、一个群组控件、一个编辑框控件和两个按钮控件。界面布局如图1所示。



1  界面设计

3)在应用程序类(CCountTextApp)的InitInstance函数中初始化COM环境,代码如下。

::CoInitialize(NULL);

4)按<Ctrl+W>组合键打开类向导,向工程中添加_Application类、Documents类、_Document类和Range类。并为控件关联变量,如图2所示。



2  类向导

注意在为静态文本控件关联变量时首先要修改控件的ID

5)在CCountTextDlg类中应用需要使用的头文件,代码如下。

#include "msword9.h"

#include "atlbase.h"

#include <comdef.h>

6)处理“打开”按钮的单击事件,在该事件的处理函数中,通过文件打开对话框获得选择的文件路径,并将文件内容显示在编辑框中,代码如下。

void CCountTextDlg::OnButopen()

{

        CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,

                "All Files(*.txt)|*.txt||",AfxGetMainWnd());                //构造文件打开对话框

        CString strPath;                                                                              //声明变量

        if(dlg.DoModal() == IDOK)                                                 //判断是否按下"打开"按钮

        {

                strPath = dlg.GetPathName();                                       //获得文件路径

                m_Path.SetWindowText(strPath);                       //显示文件路径

                CFile file;

                file.Open(strPath,CFile::modeRead);                            //打开文件

                char * buf = new char[file.GetLength()];             //分配内存空间

                file.Read(buf,file.GetLength());                            //读取文件内容

                m_Text.SetWindowText(buf);                                      //显示文件内容

                file.Close();                                                                             //关闭文件

                delete []buf;                                                                             //释放内存

        }

}

7)处理“统计”按钮的单击事件,在该事件中调用_Document类的ComputeStatistics方法统计编辑框中的字符数量,代码如下:

void CCountTextDlg::OnButcount()

{

        CString strText;

        m_Text.GetWindowText(strText);

        _Application app; 

        Documents docs;

        _Document doc;

        Range range;

       

        CComVariant a (_T("")),b(false),c(0),d(true);

        //初始化连接

        app.CreateDispatch("word.Application");

        docs.AttachDispatch(app.GetDocuments());

        doc.AttachDispatch(docs.Add(&a,&b,&c,&d));

        range.AttachDispatch(doc.GetContent());

        range.SetText(strText);

       

        long cChar = doc.ComputeStatistics(5,&_variant_t((bool)FALSE));               //含空格字符数量

        long eChar = doc.ComputeStatistics(3,&_variant_t((bool)FALSE));;              //不含空格字符数量

        m_cChar.Format("%d",cChar);

        m_eChar.Format("%d",eChar);

        //关闭

        app.Quit(&b,&c,&c);

        range.ReleaseDispatch();

        doc.ReleaseDispatch();

        docs.ReleaseDispatch();

        app.ReleaseDispatch();

        UpdateData(FALSE);

}

运行程序,效果如图3所示。



 

 

3  运行结果

本帖赏分:0 分   回复数:0 篇     下载附件
修改   删除   引用   回复
该帖暂无回复!
吉林省明日科技有限公司提供技术支持. 
Copyright © 1999-2008 吉林省明日科技有限公司. 吉ICP备10002740
当前时区 GMT+8, 今天是 
刷新页面 - 关于我们 - 设为首页