2014-07-11 5 views
1

검색 모듈 (C#의 Windows 양식)을 만들고 있습니다. 그 .txt 파일을 위해 잘 작동하지만 나는 워드 문서에서도 단어를 검색해야합니다. Microsoft.Office.Interop.Word를 사용해 보았습니다. 및 코드C#에서 단어 문서 검색

Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application(); 
Microsoft.Office.Interop.Word.Document docOpen = app.Documents.Open(flname); 
StreamReader srObj = new StreamReader(flname); 
string read = srObj.ReadToEnd(); 
if (read.Contains(txtWordInput.Text)) // searching for the input word in the file 
{ 
     count1++; 
     lbSearchList.Visible = true; 
     lbSearchList.Items.Add(flname); 
} 
srObj.Close(); 
app.Documents.Close(); 

아래와 같이했지만 그것은 런타임에 그것은 문서 파일이 따라서 이미 열려있는 문서가 열려 있지 않습니다 경우에도 액세스 할 수없는 것을 오류를했다.

나는 스트림 리더로 간단하게 작업을 시도했지만 파일을 읽었지만 데이터는 실제로 무언가가 아닌 임의의 기호로 읽었습니다. 이로 인해 if (read.Contains (txtWordInput.Text)) 문이 단어를 검색하지 못했습니다.

단어 문서에서 단어를 성공적으로 검색하는 방법에 대한 코드를 알려주십시오.

답변

0

내 두 센트는 srObj가이 컨텍스트에서 전혀 관련이 없다는 것을 의미합니다. 사용자가 수행 한 작업은 docOpen 및 app 객체를 우회하여 무시하고 생성하지만 결코 사용되지 않습니다. API에 대한 간략한 설명을 통해 문자 목록 및 단어 모음을 가져 오는 방법이 있음을 알 수있었습니다. 내가해야 할 일은 docOpen 속성의 단어 모음을 가져 와서 살펴 보는 것입니다.

docOpen.Words 속성을 사용하여 단어 모음을 가져 오거나 설정하거나 docOpen.Text를 사용하여 모든 텍스트를 문자열로 가져 오거나 설정할 수 있습니다. 예를 들어

Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application(); 
Microsoft.Office.Interop.Word.Document docOpen = app.Documents.Open(flname); 
string read = docOpen.Text 
if(read.Contains(txtWordInput.Text)) { 
    count1++; 
    lbSearchList.Visible = true; 
    lbSearchList.Items.Add(flname); 
} 
app.Documents.Close(); 

나는이 도움이 되었으면 좋겠으로

.

+0

헤이 제임스 .. 미안하지만 줄 문자열 읽기 M = docOpen.Text 는 Microsoft.Office.Interop.Word.Document가 텍스트 – sam

+0

kiran hedge ...에 대한 정의가 없다는 오류를주었습니다. 코드를 보내 주셔서 감사합니다.하지만 검색하기 전에 문서를 엽니 다. 나는 두 개의 doc 중첩 된 디렉토리 인 디렉토리에서 sam이라는 단어를 가진 디렉토리는 ... 하나를 검색하여 열었고 나머지 검색은 중단되었습니다. 내 모듈의 올바른 흐름은 .. 문서 이름을 검색하고 목록 상자에 나열한 다음 목록에서 경로를 클릭하여 파일을 여는 것입니다. 그것은 텍스트 문서에 대해 잘 작동하지만, Microsoft.office interop을 사용할 때마다 단어는 문서를 열고 흐름을 방해합니다. – sam

0

스트림 대신 Interop 라이브러리의 찾기 기능을 사용할 수 있다고 생각합니다. 다음 기능을 사용하여 원하는 텍스트가 Word 문서에 있는지 여부를 확인할 수 있습니다.

protected bool FindTextInWord(object text, string flname) 
    { 
     object matchCase = false; 
     object matchWholeWord = true; 
     object matchWildCards = false; 
     object matchSoundsLike = false; 
     object matchAllWordForms = false; 
     object forward = true; 
     object format = false; 
     object matchKashida = false; 
     object matchDiacritics = false; 
     object matchAlefHamza = false; 
     object matchControl = false; 
     object read_only = false; 
     object visible = true; 
     object replace = 2; 
     object wrap = 1; 

     Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application(); 
     Microsoft.Office.Interop.Word.Document docOpen = app.Documents.Open(flname); 
     bool val = false; 
     try 
     { 
      val = app.Selection.Find.Execute(ref text, ref matchCase, ref matchWholeWord, 
      ref matchWildCards, ref matchSoundsLike, ref matchAllWordForms, ref forward, ref wrap, 
      ref format, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
     } 
     finally 
     { 
      app.Documents.Close(); 
     } 
     return val; 
    } 

다음과 같은 링크에서 http://msdn.microsoft.com/en-us/library/office/ff193977(v=office.15).aspx

당신은 다음과 같은 함수를 호출 할 수 있습니다를 각 매개 변수의 세부 사항을 확인하실 수 있습니다

FindTextInWord((object)"Proposal","your file name here");