2013-04-17 3 views
1

Я работаю над программой, которая будет классифицировать файлы в группы на основе определенного текста, найденного в них. Большинство файлов, возможно, будут .doc или .docx.Поиск слов в документе офисного документа

Моя программа должна иметь возможность сравнить список слов со словами в файлах. Я новичок в C#, и я только изучаю программирование самостоятельно, и весь «прочитанный файл .doc» идет по моей голове, поэтому любая помощь будет принята с благодарностью!

До сих пор часть моего кода, который имеет дело с офисом:

КОДА

if (Path.GetExtension(listBox1.SelectedItem.ToString()) == ".doc" || 
    Path.GetExtension(listBox1.SelectedItem.ToString()) == ".docx") 
{ 
    Microsoft.Office.Interop.Word.Document doc = 
     new Microsoft.Office.Interop.Word.Document(listBox1.SelectedItem.ToString()); 
    doc.Activate(); 
} 

EDIT:

Извините, если этот вопрос не был достаточно ясен. Мой вопрос:

Как я могу найти, если документ содержит какие-либо конкретные слова, содержащиеся в текстовом файле. Я прочитал много других вопросов, ответов и учебников, и это может быть только я, но я полностью не понимаю.

+0

И вопрос? – Oscar

+0

Не могли бы вы просто прочитать текст через обычный streamreader и совершить круиз через объект, который ищет определенные слова? – Jonesopolis

+2

Normal streamreader не сможет понять формат файла слова, так же, как notepad.exe cant – Sayse

ответ

0

Вы, кажется, использует классы Interop Microsoft, так что вы можете изменить значение Outlook.Interop.Find

MSDN description and HOW TO

Метод выполнения возвращает истину, если документ содержит слово.

 StringBuilder sb = new StringBuilder(); 

     Word.Range rng = rodape.Range; 
     Word.Find find = rng.Find; 

     find.ClearFormatting(); 
     find.Replacement.ClearFormatting();//Only required if you will replace the text 
     if (find.Execute("textToBeFound", false)) 
     { 
      //The document contains the word 

     } 

Другой пример, от Microsoft:

private void SelectionFind() { 

object findText = "find me"; 

Application.Selection.Find.ClearFormatting(); 

if (Application.Selection.Find.Execute(ref findText, 
    ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, 
    ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, 
    ref missing, ref missing)) 
{ 
    MessageBox.Show("Text found."); 
} 
else 
{ 
    MessageBox.Show("The text could not be located."); 
} } 

Но у вас есть много других способов сделать это ..

Смежные вопросы