|
用C#实现在Word文档中搜索文本(2) 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; } } }
|