3

Open XML SDK 2.0 を使用して、Word 文書に新しい段落をプログラムで生成しています。Aには、新しく生成されたすべての段落に追加したいプロパティを持つ最初の段落があります。

このようなもの:

var _texts = new List<string>() { "Text 1", "Text 2", "Text 1", "Text 4"};
var sdtBlock = wordDoc.MainDocumentPart.RootElement.Descendants<Paragraph>().First();
foreach (string _t in _texts)
{
    Paragraph p = new Paragraph();
    p.Append(sdtBlock.ParagraphProperties);
    p.Append(new Run(new Text(_t)));
    sdtBlock.InsertAfterSelf<Paragraph>(p);
}

このコードを実行すると、「ツリーの一部であるため、OpenXmlElement "newChild" を挿入できません。」という例外がスローされます。何か案は?

4

1 に答える 1

8

メソッドを使用して、新しい段落に追加するCloneNode()インスタンスのコピーを作成する必要があります。ParagraphProperties

p.Append(sdtBlock.ParagraphProperties.CloneNode(true));

そうしないと、説明した例外が発生します(元のノードを同じドキュメント内の 2 つの異なる場所に追加することになるため、これは許可されていません。意図したことではありません)。

于 2012-12-07T08:43:59.393 に答える