Как загрузить текст документа 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.
Просто вызовите команду так: "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
Я недавно провел небольшое исследование на эту тему. Оказывается, чтобы иметь возможность программно управлять файлами слов, не открывая само слово, вам нужны очень дорогие инструменты.
В проекте кода есть статья о манипулировании 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.