Pregunta

Estoy tratando de archivo .doc abrir y leer su contenido. Pero no puedo encontrar ninguna manera de cómo hacer esto sin necesidad de iniciar MS Word.

Ahora he siguiente código:

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);

Pero lanza MSWord, cualquier solución a hacerlo sin necesidad de iniciar?

¿Fue útil?

Solución

Hay dos posibilidades: o bien utilizan especificaciones de Microsoft para escribir su propio analizador para el formato .doc, o utilizar una biblioteca existente con el propósito (por ejemplo, de Aspose ). A menos que tenga un par de años repuesto para gastar en la tarea, este último es claramente la opción correcta.

Otros consejos

La última vez que hice esto (a través de COM de C ++), recuerdo una propiedad 'Visible' en la interfaz de la aplicación (true = visible).

Sin embargo, me parece que el defecto era falso, por lo que tuvo que ponemos a true para que aparezca la palabra.

Independientemente de si o no el usuario puede ver Word, seguirá viendo winword.exe (o lo que se llama hoy en día) en su administrador de tareas. No creo que hay una manera de acceder Palabra a través de esta interfaz sin que el lanzamiento de la Palabra (detrás de las escenas o no).

Si no desea que Word lanzamiento en absoluto, puede que tenga que encontrar otra solución.

Añadir el espacio de nombres utilizando Agregar referencia -> Consulta -> Code7248.word_reader.dll

Descargar DLL desde la URL dada:

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

(Un simple .NET Biblioteca compatible con .NET 2.0, 3.0, 3.5 y 4.0 para C #. Se puede extraer la actualidad sólo el texto sin formato de un archivo .doc o .docx).

El código de ejemplo está en sencilla consola en 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();
        }
    }
}

Se está trabajando bien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top