c#.net中通過關鍵字檢索指定檔案夾中的word文檔

來源:互聯網
上載者:User

添加引用: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;
        }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.