質問

.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を起動します。

役に立ちましたか?

解決

2つの可能性:使用 Microsoftの仕様 .doc形式用に独自のパーサーを作成するか、目的のために既存のライブラリを使用します(例: アセッスン)。タスクに費やすために数年の余裕がない限り、後者は明らかに正しい選択です。

他のヒント

前回これを行いました(COMからC ++から)、アプリケーションインターフェイス(True = Visible)に「可視」プロパティを思い出します。

ただし、デフォルトは誤っているように思えますので、単語を表示するためにそれを真に設定する必要がありました。

ユーザーがWordを見ることができるかどうかに関係なく、タスクマネージャーにWinword.exe(または今日と呼ばれるもの)が表示されます。単語を起動せずに(舞台裏であろうとなかろうと)、このインターフェイスを介して単語にアクセスする方法はないと思います。

Wordをまったく起動したくない場合は、別のソリューションを見つける必要がある場合があります。

参照を追加して名前空間を追加 - > browse-> code7248.word_reader.dll

指定されたURLからDLLをダウンロードしてください:

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

(C#で.NET 2.0、3.0、3.5、および4.0と互換性のある単純な.NETライブラリ。現在、.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