Как загрузить текст документа MS Word В C# (.NET)?

Как загрузить документ MS Word (.док и. docx) в память (переменную) без этого?:

wordApp.Документы.Открыть

Я не хочу открывать MS Word, я просто хочу, чтобы этот текст внутри.

вы дали мне ответ для DOCX, но как насчет DOC? Я хочу бесплатное и высокопроизводительное решение-не открывать 12.000 экземпляров Word для обработки всех из них. : (Aspose-коммерческий продукт, а 900$ - это слишком много для того, что я делаю.

7 ответов


вы можете использовать wordconv.exe, который является частью пакета совместимости Office для преобразования из doc в docx.

http://www.microsoft.com/downloads/details.aspx?familyid=941b3470-3ae9-4aee-8f43-c6bb74cd1466&displaylang=en

просто вызовите команду так: "C:\Program файлы\Microsoft Office\Office12\wordconv.exe " - oice - NME InputFile OutputFile

Я не уверен, что вам нужно установить word для его запуска, но он работает. Я использую его локально как команда оболочки windows для преобразования старых файлов office в формат 2007, когда я хочу.


для документов Word в формате docx я нашел эту интересную статью о CodeProject

использование DocxToText для извлечения текста из файлов DOCX

в статье автор обсуждает удаление только самих слов.

для ваших документов doc (non-docx) Word, кроме использования API Office и (в фоновом режиме) создания экземпляра Word, вы можете попробовать развернуть один из многих различных конвертеров Doc2Docx на рынок, а затем применение вышеуказанного процесса для обоих.


Если вы имеете дело с docx, вы можете сделать это, не делая никакого взаимодействия с Word .docx файл на самом деле ZIP содержит XML-файл , вы можете прочитать XML Пожалуйста, обратитесь к приведенным ниже ссылкам

http://conceptdev.blogspot.com/2007/03/open-docx-using-c-to-extract-text-for.html

Office (2007) форматы файлов Open XML


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

есть статья в код проекта по манипулированию Word, вы можете найти это полезным. Автор создает оболочку C# COM для обработки вызовов Word. Похоже, что он на самом деле открывает приложение word.

этот пост в neowin форумы выглядит многообещающе. Он включает в себя довольно много PInvoked вызовов с целью извлечения текста.

возможно, если бы вы могли найти способ сохранить окно скрытым, это было бы приемлемо.


Aspose имеет компонент для чтения, изменения и записи документов Word. Вот ссылка на продукт : Aspose.Слова для .NET и Java

Aspose.Слова включает .NET и Java приложений для чтения, изменения и записи Документы Word® без использования программа Microsoft Word.® Aspose.Слова поддерживает широкий спектр функций, включая создание документов, их содержание и управление форматированием, мощная почта возможности слияния, всесторонняя поддержка из DOC, OOXML, РТФ элемента wordprocessingml, Форматы HTML, OpenDocument и PDF. Aspose.Слова действительно самые доступный, быстрый и многофункциональный Компонент Word на рынке.


С docxtemplater, вы можете легко получить полный текст Слова (работает только с docx).

вот код (узел.В JS)

DocxTemplater=require('docxtemplater'); doc=new DocxTemplater().loadFromFile("input.docx"); result=doc.getFullText();

Это всего лишь три строки кода и не зависит от какого-либо экземпляра слова (все простые JS)


Я не хочу быть антагонистом, но почему?

я извлек данные из документов Word на серверах Linux с помощью Word2X или AbiWord и в зависимости от количества и разнообразия документов всегда будут ошибки при извлечении. Это хуже, чем больше пуль, разрывов страниц, разделов документов и других "специальных" функций.

Я понимаю, что теперь есть варианты автоматизации OpenOffice для обработки документов, но мой совет, если вы можете, просто используйте Word для обработки документов Word.