1

Open XML SDK 2.0を使用して C# でコードを書いています。TextBox、Select Option などのWord 文書でいくつかのコントロールを定義しました。それらのデータをプログラムで読み取りたいです (以下にサンプルを示します)。

WordprocessingDocument InputWordDocument = WordprocessingDocument.Open(@"C:\Users\jayant\Desktop\Template.docx", false);
foreach (Control ctrl in InputWordDocument.MainDocumentPart.Document.Body.Descendants<Control>())
{
    Console.WriteLine(ctrl.Name.Value);
}

ただし、値ではなくコントロールの名前が表示されます。

値を取得するにはどうすればよいですか?

4

2 に答える 2

2

System.Windows.Forms.Control クラスではなく、DocumentFormat.OpenXml.Wordprocessing.Control クラスを使用する必要があります。その後、子ノードを通過する必要があることを変更します。

WordprocessingDocument InputWordDocument = WordprocessingDocument.Open(@"C:\Users\jayant\Desktop\Template.docx", false);
foreach (DocumentFormat.OpenXml.Wordprocessing.Control ctrl in InputWordDocument.MainDocumentPart.Document.Body.Descendants<Control>())
{
    ...
}

ヒント: 扱いやすい XmlNode を使用してください。

于 2012-09-05T08:59:47.700 に答える
0

リレーションシップ ID を取得するには、ctrl.Name の代わりに ctrl.Id を使用する必要があります。他の場所に保存されているコントロール コンテンツにアクセスするには、この関係 ID が必要です。

その後、MainDocumentPart.GetPartById(ctrl.Id) を呼び出して、コントロール データを取得できます。何かを使用する前に、正しい型にキャストする必要があることを覚えておいてください。

于 2012-09-26T17:13:33.253 に答える