|
在使用Word文档时,经常要对文档中的字符数、段落数、页码等进行统计,那要如何通过程序来实现这一功能呢?通过_Document类的ComputeStatistics方法可以获得文档中的段落数量,下面通过实例来介绍一下如何获得Word文档中的段落数量,步骤如下: (1)创建一个基于对话框的应用程序,设置对话框标题为“统计Word文档段落数量”。 (2)向对话框中添加3个静态控件、一个编辑框控件和一个按钮控件。界面布局如图1所示。 (3)在应用程序类(CCountParagraphApp)的InitInstance函数中初始化COM环境,代码如下。 ::CoInitialize(NULL); (4)按<Ctrl+W>组合键打开类向导,向工程中添加_Application类、Documents类和_Document类。并为控件关联变量,如图2所示。 图2 类向导 (5)在CCountParagraphDlg类中应用需要使用的头文件,代码如下。 #include "msword9.h" #include "atlbase.h" #include <comdef.h> (6)处理“打开”按钮的单击事件,在该事件的处理函数中,通过文件打开对话框获得选择的Word文档路径,并获得文档中的段落数量,代码如下。 void CCountParagraphDlg::OnButopen() { CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, "All Files(*.doc)|*.doc||",AfxGetMainWnd()); //构造文件打开对话框 CString strPath; //声明变量 if(dlg.DoModal() == IDOK) //判断是否按下"打开"按钮 { strPath = dlg.GetPathName(); //获得文件路径 m_Path.SetWindowText(strPath); //显示文件路径 _Application app; Documents docs; _Document doc; long sum = 0; CComVariant a (_T(strPath)),b(false),c(0),d(true); //声明变量 //初始化连接 app.CreateDispatch("word.Application"); docs.AttachDispatch(app.GetDocuments()); doc.AttachDispatch(docs.Add(&a,&b,&c,&d)); //当ComputeStatistics的第一个参数值为4时,表示要获取的是文档中段落数 long paragraph = doc.ComputeStatistics(4,&_variant_t((bool)FALSE)); CString strParagraph; strParagraph.Format("%d个",paragraph); //格式化字符串 m_Number.SetWindowText(strParagraph); //显示段落数 //关闭 app.Quit(&b,&c,&c); doc.ReleaseDispatch(); docs.ReleaseDispatch(); app.ReleaseDispatch(); } } 运行程序,效果如图3所示。
图3 运行结果 |