Поиск слов в офисном документе Word

Я работаю над программой, которая будет классифицировать файлы по группам на основе определенного текста, найденного в них. Большинство файлов, возможно, будут иметь формат .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();
}

РЕДАКТИРОВАТЬ:

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

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


person WolfyD    schedule 17.04.2013    source источник
comment
Не могли бы вы просто прочитать текст через обычный потоковый ридер и просмотреть объект в поисках определенных слов?   -  person Jonesopolis    schedule 18.04.2013
comment
Обычный потоковый ридер не сможет понять формат файла word, так же, как notepad.exe не может   -  person Sayse    schedule 18.04.2013
comment
вот ссылка, которая делает это для вас, судя по всему (я потратил на это 5 секунд) mantascode.com/   -  person Sayse    schedule 18.04.2013
comment
это правда. Я тупой.   -  person Jonesopolis    schedule 18.04.2013


Ответы (2)


Вот введение в чтение текста из файла .docx: http://www.codeproject.com/Articles/20529/Using-DocxToText-to-Extract-Text-from-DOCX-Files

Вы можете преобразовать файлы .doc в файлы .docx и использовать один и тот же процесс для обоих.

person Splendor    schedule 17.04.2013

вы, кажется, используете классы взаимодействия Microsoft, поэтому вы можете использовать Outlook.Interop.Find

описание MSDN и инструкции

Метод execute вернет true, если документ содержит слово.

        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

        }

Другой пример от майкрософта:

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.");
} }

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

person Anderson Rissardi    schedule 04.07.2016