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

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

wordApp.Documents.Open

Я не хочу открывать 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 Files\Microsoft Office\Office12\wordconv.exe" -oice -nme InputFile OutputFile

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

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

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

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

Для ваших документов Word (не в формате docx), кроме использования 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) Открытые форматы файлов XML

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

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

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

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

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

Aspose.Words позволяет приложениям.NET и Java читать, изменять и писать документы Word® без использования Microsoft Word®. Aspose.Words поддерживает широкий спектр функций, включая создание документов, манипулирование содержимым и форматированием, мощные возможности слияния почты, всестороннюю поддержку форматов DOC, OOXML, RTF, WordprocessingML, HTML, OpenDocument и PDF. Aspose.Words - действительно самый доступный, самый быстрый и многофункциональный компонент Word на рынке.

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

Вот код (Node.JS)

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

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

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

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

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

Другие вопросы по тегам