打印本文 关闭窗口 |
|
| 用C#实现在Word文档中搜索文本 | |
| 作者:佚名 文章来源:不详 点击数 更新时间:2008/5/9 19:01:03 文章录入:杜斌 责任编辑:杜斌 | |
|
|
|
|
Word的对象模型有比较详细的帮助文档,放在Office安装程序目录,office 2003是在Program Files\Microsoft Office\OFFICE11\2052下,文档本身是为VBA提供的,在这个目录下还可以看到所有的office应用程序的VBA帮助。 object filename=" "; //要打开的文档路径 string strKey=" "; //要搜索的文本 object MissingValue=Type.Missing;![]() Word.Application wp=new Word.ApplicationClass(); Word.Document wd=wp.Documents.Open(ref filename,ref MissingValue, ref MissingValue,ref MissingValue, ref MissingValue,ref MissingValue, ref MissingValue,ref MissingValue, ref MissingValue,ref MissingValue, ref MissingValue,ref MissingValue, ref MissingValue,ref MissingValue, ref MissingValue,ref MissingValue);![]() if (wd.Content.Text.IndexOf(strKey)>=0)![]() ![]() { MessageBox.Show("文档中包含指定的关键字!","搜索结果",MessageBoxButtons.OK); } else![]() ![]() { MessageBox.Show("文档中没有指定的关键字!","搜索结果",MessageBoxButtons.OK); }![]()
![]() ![]() wd.Content.Find.Text=strKey; if (wd.Content.Find.Execute(ref MissingValue,ref MissingValue, ref MissingValue,ref MissingValue, ref MissingValue,ref MissingValue, ref MissingValue,ref MissingValue, ref MissingValue,ref MissingValue, ref MissingValue,ref MissingValue, ref MissingValue,ref MissingValue, ref MissingValue))![]() ![]() { MessageBox.Show("文档中包含指定的关键字!","搜索结果",MessageBoxButtons.OK); } else![]() ![]() { MessageBox.Show("文档中没有指定的关键字!","搜索结果",MessageBoxButtons.OK); }![]() ![]() ![]()
这样似乎也不是最好,因为我只要判断指定的文本是不是在文档中,而不需要知道它出现了几次,如果有多个要搜索的文本,难道每次都进行全文档搜索?假设我要搜索的文本包含在文档中,最好的情况是在文档开头就包含我要查找的文本,最坏的情况是在文档的最后包含要查找的文本,如果每次取一部分文档进行判断,符合条件就结束本次搜索,就可以避免每次搜索整个文档了。模型中的Paragraphs对象现在派上用场了,再修改一下代码: ![]() ![]() int i=0,iCount=0; Word.Find wfnd;![]() if (wd.Paragraphs!=null && wd.Paragraphs.Count>0)![]() ![]() { iCount=wd.Paragraphs.Count; for(i=1;i<=iCount;i++)![]() { wfnd=wd.Paragraphs[i].Range.Find; wfnd.ClearFormatting(); wfnd.Text=strKey; if (wfnd.Execute(ref MissingValue,ref MissingValue, ref MissingValue,ref MissingValue, ref MissingValue,ref MissingValue, ref MissingValue,ref MissingValue, ref MissingValue,ref MissingValue, ref MissingValue,ref MissingValue, ref MissingValue,ref MissingValue, ref MissingValue))![]() { MessageBox.Show("文档中包含指定的关键字!","搜索结果",MessageBoxButtons.OK); break; } } }![]() ![]() ![]() |
|
打印本文 关闭窗口 |