Вопрос

Я пытаюсь открыть файл .doc и прочитал его контент. Но я не могу найти, как это сделать без запуска Msword.

Теперь у меня следующий код:

Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
object nullObject = System.Reflection.Missing.Value;
object file = @"C:\doc.doc";
Microsoft.Office.Interop.Word.Document doc = app.Documents.Open(ref file, ref nullObject, ref nullObject,
         ref nullObject, ref nullObject, ref nullObject, ref nullObject, ref nullObject, ref nullObject,
         ref nullObject, ref nullObject, ref nullObject, ref nullObject, ref nullObject, ref nullObject,
         ref nullObject);
doc.ActiveWindow.Selection.WholeStory();
doc.ActiveWindow.Selection.Copy();
IDataObject data = Clipboard.GetDataObject();
string text = data.GetData(DataFormats.Text).ToString();
doc.Close(ref nullObject, ref nullObject, ref nullObject);
app.Quit(ref nullObject, ref nullObject, ref nullObject);

Но он запускает Msword, любое решение, чтобы сделать это без запуска?

Это было полезно?

Решение

Две возможности: либо использовать Спект Microsoft Чтобы написать свой собственный парсер для формата .doc или используйте существующую библиотеку для целей (например, из Аспекты). Если у вас нет пары свободных лет, чтобы потратить на задачу, последний явно является правильным выбором.

Другие советы

В прошлый раз я сделал это (через COM от C ++), я вспоминаю «видимое» свойство в интерфейсе приложений (True = Visible).

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

Независимо от того, может ли пользователь видеть слово, вы все равно будете увидите WinWord.exe (или все, что он называется сегодня) в вашем диспетчере задач. Я не думаю, что есть способ доступа к слову через этот интерфейс без него запускающий слово (за кулисами или нет).

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

Добавьте пространство имен, используя Add Reference -> Обзор -> Code7248.word_Reader.dll

Скачать DLL из данного URL:

sourceforge.net/p/word-reader/wiki/home.

(Простая библиотека .NET, совместимая с .NET 2.0, 3.0, 3.5 и 4.0 для C #. Он в настоящее время может извлечь только необработанный текст из файла .doc или .docx.)

Код выборки находится в простой консоли в C #:

using System;
using System.Collections.Generic;
using System.Text;
//add extra namespaces
using Code7248.word_reader;


namespace testWordRead
{
    class Program
    {
        private void readFileContent(string path)
        {
            TextExtractor extractor = new TextExtractor(path);
            string text = extractor.ExtractText();
            Console.WriteLine(text);
        }
        static void Main(string[] args)
        {
            Program cs = new Program();
            string path = "D:\Test\testdoc1.docx";
            cs.readFileContent(path);
            Console.ReadLine();
        }
    }
}

Это работает нормально.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top