c#.net中通过关键字检索指定文件夹中的word文档

添加引用:COM下的Microsoft Word 11.0 Object Liabrary

private static object nullobj = System.Reflection.Missing.Value;

/// <summary>
        
/// search in a DOC file(查询DOC文件的内容)
        
/// </summary>
        
/// <param name="fileName"></param>
        
/// <param name="searchForText">要搜索的文本</param>
        
/// <param name="CaseSensitive">是否区分大小写</param>
        
/// <returns></returns>

        public static bool SearchInDoc(string fileName,string searchForText,bool CaseSensitive)
        
{
            
bool Result = (searchForText.Length == 0);
            
object filename = fileName;    //要打开的文档路径
            object MissingValue=System.Reflection.Missing.Value;//Type.Missing;
            object readOnly = false;
            Microsoft.Office.Interop.Word.Application wp 
= null;
            Microsoft.Office.Interop.Word.Document wd 
= null;
            
            
try
            
{
                wp 
= new Microsoft.Office.Interop.Word.ApplicationClass();
                wd 
= wp.Documents.Open(ref filename,ref MissingValue,
                    
ref readOnly,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);
            
                
int i=0,iCount=0;
                Microsoft.Office.Interop.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.MatchCase = CaseSensitive;
                        wfnd.Text 
= searchForText;
                        
                         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))
                        
{
                            Result 
= true;
                            
break;
                        }

                    }

                }

            }

            
catch(Exception ex)
            
{
                
throw new Exception(ex.Message);
            }

            
finally
            
{
                
if(wd != null)
                
{
                    wd.Close(
ref nullobj,ref nullobj,ref nullobj);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(wd);  
                    wd 
= null;
                }
                

                
if(wp != null)
                
{    
                    wp.Quit(
ref nullobj,ref nullobj,ref nullobj);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(wp);
                    wp 
= null;
                }


                GC.Collect();
            }


            
return Result;
        }

posted on 2007-01-19 13:52    阅读(1946)  评论(1编辑  收藏  举报

导航