3

私はこの仕事をするのにとても近いです。基本的には、ワードドキュメントから入力フィールドを読み取りたいです。言い換えれば、私は持っています:

ここに画像の説明を入力してください

Hello worldは、画像でも強調表示されているAaボタンをクリックして配置したラベルのコンテンツです。したがって、Test.docxコードを使用して次のようにそのドキュメントを保存すると、次のようになります。

using System;
using Microsoft.Office.Interop.Word;

class Program
{
    static void Main(string[] args)
    {
        Application word = new ApplicationClass();
        object miss = System.Reflection.Missing.Value;
        object path = @"a:\Users\Eduardo\Desktop\Test.docx";  // <-------- Path where document is
        object readOnly = false;
        Document document = word.Documents.Open(ref path, ref miss, ref readOnly, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss);

        // here I iterate through all the input fields!!!  <--------------------------
        foreach (ContentControl ff in document.ContentControls)
        {
            var m = ff.PlaceholderText; // for some reason I cannot get the text of the control.
            var b = ff.ShowingPlaceholderText;
            Console.WriteLine(ff.ToString());
        }

        document.Close(ref miss, ref miss, ref miss);
        word.Quit();
    }
}

すべての入力フィールドを反復処理することができます。私が見逃しているのは、コントロール内の値を取得することだけです。


編集

最終的に解決策を見つけました何らかの理由で、プロパティがデバッガーに表示されません!とにかく、私がしなければならなかったそのコントロールのテキストを取得するには:

 Console.WriteLine(ff.Range.Text);

したがって、私の最終的なコードは次のようになります。

using System;
using Microsoft.Office.Interop.Word;

class Program
{
    static void Main(string[] args)
    {
        Application word = new ApplicationClass();
        object miss = System.Reflection.Missing.Value;
        object path = @"a:\Users\Eduardo\Desktop\Test.docx";  // <-------- Path where document is
        object readOnly = false;
        Document document = word.Documents.Open(ref path, ref miss, ref readOnly, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss);

        foreach (ContentControl ff in document.ContentControls)
        {
            Console.WriteLine(ff.Range.Text);
        }

        document.Close(ref miss, ref miss, ref miss);
        word.Quit();
    }
}
4

0 に答える 0