Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск файлов по содержанию, поиск файлов 
V
    Опции темы
Chef
  Дата 23.5.2008, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 7.12.2007
Где: РК Павлодар

Репутация: нет
Всего: нет



Проблема такая:

В директории есть множество Word документов, мне нужно провести поиск и найти те документы где есть, нужная мне строка.

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

Есть ли другии варианты ?


--------------------
Разговоры об IT
PM MAIL WWW   Вверх
Rififi
Дата 23.5.2008, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 5
Всего: 36



Цитата(Chef @  23.5.2008,  18:15 Найти цитируемый пост)
Есть ли другии варианты ?

IFilter
PM MAIL   Вверх
Stepan_Lameroff
Дата 23.5.2008, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 16.12.2006

Репутация: 9
Всего: 14



<= Office 11
Wv for Windows
wrapper - wvfornet

Office 12
Open XML Format SDK

или
Using DocxToText to Extract Text from DOCX Files

или
Код

        private const string documentRelationshipType =
            "http://schemas.openxmlformats.org/officeDocument/2006/" +
            "relationships/officeDocument";

        public static string DocxToText(FileInfo file)
        {
            StringBuilder result = new StringBuilder();
            XslCompiledTransform compiledTransform = new XslCompiledTransform();
            compiledTransform.Load("WordToText.xslt");
            using (Package document = Package.Open(file.FullName))
            {
                foreach (PackageRelationship relationship in document.GetRelationshipsByType(documentRelationshipType))
                {
                    Uri uri = PackUriHelper.ResolvePartUri(
                        new Uri("/", UriKind.Relative), relationship.TargetUri);
                    PackagePart part = document.GetPart(uri);

                    using (TextWriter writer = new StringWriter())
                    {
                        compiledTransform.Transform(new XmlTextReader(part.GetStream()), null, writer);
                        result.Append(writer.ToString());
                    }
                }
            }
            return result.ToString();
        }


WordToText.xslt
Код

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
  <xsl:output method="text" />
  <xsl:template match="/">
    <xsl:apply-templates select="//w:body" />
  </xsl:template>

  <xsl:strip-space elements="*"/>

  <xsl:template match="w:body">
    <xsl:apply-templates />
  </xsl:template>

  <xsl:template match="w:p">
    <xsl:apply-templates select="w:r" />
    <xsl:text>
</xsl:text>
  </xsl:template>

  <xsl:template match="w:r">
    <xsl:apply-templates select="w:t" />
  </xsl:template>

  <xsl:template match="w:t">
    <xsl:apply-templates select="../w:rPr" />
    <xsl:value-of select="." />
  </xsl:template>
</xsl:stylesheet>


P.S.
Еще вот вспомнил b2xtranslator
Может пригодится smile

Это сообщение отредактировал(а) Stepan_Lameroff - 23.5.2008, 22:01
PM MAIL   Вверх
Chef
Дата 23.5.2008, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 7.12.2007
Где: РК Павлодар

Репутация: нет
Всего: нет



Stepan_Lameroff 
Можешь код объяснить, а то чето как то не совсем понятно.....
Package - откуда этот тип ?

Rififi
Я с такого рода вещами первый раз сталкиваюсь, можно по подробней

Взарание всем спасибо

Это сообщение отредактировал(а) Chef - 23.5.2008, 22:40
--------------------
Разговоры об IT
PM MAIL WWW   Вверх
tea_723
Дата 23.5.2008, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 13.9.2007

Репутация: нет
Всего: нет



PM MAIL   Вверх
Stepan_Lameroff
Дата 23.5.2008, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 16.12.2006

Репутация: 9
Всего: 14



Цитата(Chef @  23.5.2008,  22:38 Найти цитируемый пост)
Package - откуда этот тип ?

Namespace:  System.IO.Packaging
Assembly:  WindowsBase (in WindowsBase.dll)
FW 3.0
В окошке "Add Reference" выбрать WindowsBase
Если FW 3.0(3.5), не стоит посмотрите пример Using DocxToText to Extract Text from DOCX Files там для распаковки используется ICSharpCode.SharpZipLib (все документы формата OpenXML по сути являются zip архивами)
Книга на русском по OpenXML

PM MAIL   Вверх
Chef
Дата 23.5.2008, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 7.12.2007
Где: РК Павлодар

Репутация: нет
Всего: нет



tea_723 
Спасибо, полезная ссылка

--------------------
Разговоры об IT
PM MAIL WWW   Вверх
Stepan_Lameroff
Дата 23.5.2008, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 16.12.2006

Репутация: 9
Всего: 14



Chef
Стоит обратить внимание, что при работе с EPocalipse.IFilter возможны проблемы с Adobe 8+ AcroIF.dll (решается путем добавления %ProgramFiles%\Adobe\Acrobat 8.0\Acrobat\ в PATH). C Foxit PDF IFilter работает нормально.
P.S.
Если решили работать с IFilter, обратите внимание на filtdump.exe.
Скорость работы будет намного лучше.


Это сообщение отредактировал(а) Stepan_Lameroff - 24.5.2008, 00:00
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0722 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.