Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Поиск в документах doc и docx строк из списка разными способами

Ответить
Настройки темы
.NET - Поиск в документах doc и docx строк из списка разными способами

Старожил


Сообщения: 230
Благодарности: 2

Профиль | Отправить PM | Цитировать


Мне нужно найти строки из большого списка строк в документах doc и docx, причем нужная строка может быть в любом месте документа - таблице, абзаце, сноске и др.
Возникли следующие вопросы:
1. Можно ли открыть документ doc или docx с помощью Microsoft.Office.Interop.Word и затем во всем тексте документа найти нужную строку?
Я попробовал doc.Content.Find.Text.IndexdocOf(strFind) - не получилось, строка, которая точно есть в документе, не ищется.
2. В Total Commander есть возможность поиска строки в doc и docx без COM и установленного Word. В настоящее время сотрудники вводят каждую строку из списка и ищут
каждую из строк в Total Commander. Мне хотелось бы сделать программу, которая искала бы строки из списка в документах doc и docx без установленного Word. Подскажите, пожалуйста, какие файловые методы (работа с текстовыми файлами, работа с бинарными файлами или др.) или библиотеки лучше использовать для решения этой задачи.

Отправлено: 08:25, 19-05-2018

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата tumanovalex:
Я попробовал doc.Content.Find.Text.IndexdocOf(strFind) - не получилось, строка, которая точно есть в документе, не ищется. »
Документ в архив, архив — к сообщению. Укажите образец текста для поиска.

Цитата tumanovalex:
2. В Total Commander есть возможность поиска строки в doc и docx без COM и установленного Word. »
В .doc строки тупо ищутся в самих файлах (требуется отметить флажок UTF-16), а не в содержимом документов. В .docx, представляющих собой zip-архив с содержимым из двоичных и текстовых xml-файлов поиск осуществляется опять же вовсе не по содержимому документа, а по всему перечню xml-содержимого этого архива. Посему поиск и в одном, и в другом подвержен ошибкам как первого, так и второго рода.

Цитата tumanovalex:
какие файловые методы (работа с текстовыми файлами, работа с бинарными файлами или др.) или библиотеки лучше использовать для решения этой задачи. »
В первом случае — открыть двоичный файл как текстовый в кодировке UTF-16LE, прочитать содержимое, осуществить в прочитанном поиск. Во втором случае — извлечь содержимое файла как из zip-архива в новосозданный каталог временных файлов, рекурсивно перебрать все xml-файлы в этом каталоге, открыть каждый файл xml в указанной в нём кодировке, прочитать содержимое, осуществить в прочитанном поиск, под конец — удалить извлеченное содержимое из каталога временных файлов.

Так или иначе, я не рекомендую такой поиск.

Отправлено: 09:04, 19-05-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 230
Благодарности: 2

Профиль | Отправить PM | Цитировать


Спасибо за ответ. Прикрепил архив с проектом и файлом, в котором не могу найти строку.

Последний раз редактировалось tumanovalex, 15-05-2021 в 22:37.


Отправлено: 17:37, 19-05-2018 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


tumanovalex, в коде:
Код: Выделить весь код
Word.Document doc = new Word.Document();
new — лишнее.


Судя по Вашему коду, да — у Вас действительно, на самом деле «не ищется». Потому что Вы даже не пробуете искать. Просто откройте документ в Word'е, нажмите Alt-F11, наберите в окне для поиска в справке Find, выберете статью в справке и посмотрите примеры, как осуществляется поиск:
Цитата:
Example

The following example searches forward through the document for the word "Microsoft." If the word is found, it's automatically selected.
Код: Выделить весь код
With Selection.Find
    .Forward = True
    .ClearFormatting
    .MatchWholeWord = True
    .MatchCase = False
    .Wrap = wdFindContinue
    .Execute FindText:="Microsoft"
End With
This example inserts "Tip: " at the beginning of every paragraph formatted with the Heading 3 style in the active document. The Do…Loop statement is used to repeat a series of actions each time this style is found.
Код: Выделить весь код
With ActiveDocument.Content.Find
    .ClearFormatting
    .Style = wdStyleHeading3
    Do While .Execute(FindText:="", Forward:=True, _
            Format:=True) = True
        With .Parent
            .StartOf Unit:=wdParagraph, Extend:=wdMove
            .InsertAfter "Tip: "
            .Move Unit:=wdParagraph, Count:=1
        End With
    Loop
End With
— методом .Execute(), который возвращает булево значение, по которому можно судить об успешности нахождения искомого. Аналогичные же примеры можно найти и в MSDN: Find.Execute Method (Word), Find.Execute method (Microsoft.Office.Interop.Word) и т.п.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:16, 19-05-2018 | #4


Старожил


Сообщения: 230
Благодарности: 2

Профиль | Отправить PM | Цитировать


Спасибо большое! Разобрался, поиск работает.

Отправлено: 22:06, 21-05-2018 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Поиск в документах doc и docx строк из списка разными способами

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - doc в docx Sisin Скриптовые языки администрирования Windows 33 13-05-2018 00:39
2007 - [решено] Пакетная конвертация doc в docx tumanovalex Microsoft Office (Word, Excel, Outlook и т.д.) 2 11-04-2018 23:01
CMD/BAT - [решено] Пересохранить документы из DOC в DOCX NikolayHAOS Скриптовые языки администрирования Windows 6 19-08-2017 12:22
Разное - Сохранение документа из формата docx в doc, без потери формул xfinity Microsoft Office (Word, Excel, Outlook и т.д.) 14 21-03-2015 22:13
Офис и Текст - Программы для конвертирования DOCX в DOC thief_89 Программное обеспечение Windows 1 13-08-2007 14:53




 
Переход