程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> 用C#實現在Word文檔中搜索文本

用C#實現在Word文檔中搜索文本

編輯:C#基礎知識

  在word應用程序中搜索和替換文本是舉手之勞的事情,通過word的對象模型,我們也可以使用編程方式來實現。

  Word的對象模型有比較詳細的幫助文檔,放在office安裝程序目錄,office 2003是在Program Files\Microsoft Office\OFFICE11\2052下,文檔本身是為VBA提供的,在這個目錄下還可以看到所有的office應用程序的VBA幫助。

  打開VBAWD10.CHM,看到word的對象模型,根據以往的使用經驗,很容易在Document對象下找到Content屬性,該屬性會返回一個文檔文字部分的Range對象,從這個對象中不難取到所有的文檔內容,再用string的IndexOf()方法很容易達到目標。

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);

        }

        

        

  不過,這種做法是很勉強的,對小文檔來說,不存在問題,對超長超大的文檔來說,這樣的實現方法已經暗埋bug了,而且是程序級的bug,因為正常的測試會很難發現問題,在使用中導致程序出現什麼樣的結果也很難量化描述。

  其實,在word中已經提供了可以用作搜索的對象Find,在對象模型上也比較容易找到,對應的說明是這樣的:該對象代表查找操作的執行條件。Find 對象的屬性和方法與“替換”對話框中的選項一致。從模型上看,Find對象是Selection的成員,從示例代碼來看似乎也是Range的成員,查找Range的屬性,果然如此。於是修改上面的代碼:

  • 首頁
  • 上一頁
  • 1
  • 2
  • 下一頁
  • 尾頁
  • 共2頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved