Question

Je suis en train d'ouvrir le fichier .doc et lire son contenu. Mais je ne peux pas trouver un moyen comment faire cela sans lancer MSWord.

Maintenant, j'ai code suivant:

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

Mais il lance MSWord, toute solution pour le faire sans lancer?

Était-ce utile?

La solution

Deux possibilités: utiliser soit spécification Microsoft pour écrire votre propre analyseur pour le format .doc ou utiliser une bibliothèque existante dans le but (par exemple, Aspose ). Sauf si vous avez quelques années de rechange à consacrer à la tâche, ce dernier est clairement le bon choix.

Autres conseils

La dernière fois que je l'ai fait (via COM de C ++), je me souviens d'une propriété 'visible' dans l'interface d'application (true = visible).

Cependant, il me semble que le défaut était faux, donc il fallait le mettre à true pour faire apparaître Word.

Peu importe si oui ou non l'utilisateur peut voir Word, vous verrez toujours winword.exe (ou quelque chose comme ça aujourd'hui) dans votre gestionnaire de tâches. Je ne pense pas qu'il y ait un moyen de Word accès via cette interface sans lui lancer Word (dans les coulisses ou non).

Si vous ne vous pouvez avoir voulez pas Word pour le lancement du tout, trouver une autre solution.

Ajoutez l'espace de noms à l'aide Ajouter Référence -> Parcourir -> Code7248.word_reader.dll

Télécharger dll de l'URL donnée:

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

(une simple bibliothèque .NET compatible avec .NET 2.0, 3.0, 3.5 et 4.0 pour C #. Il peut actuellement extraire uniquement le texte brut à partir d'un fichier .doc ou .docx).

Le code échantillon est dans la console simple 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();
        }
    }
}

Il fonctionne très bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top