[ad_1]
OpenXML を使用してフッターにテキストを追加する方法を知っている人はいますか? 残念ながら、ドキュメント パーツにテキストを追加する方法を知っていても、フッター/ヘッダーの設定が異なり、対応するパーツがないように見えるため、あまり役に立ちません。
私が試したこと:
FooterPart フッター = _doc.MainDocumentPart.FooterParts.ElementAtOrDefault(0);
段落段落 = footer.AddPart<段落>(段落);
解決策 1
引用:ヘッダーとフッターは MainDocumentPart.Document にはなく、HeaderParts のサブパーツであり、 フッターパーツ[^] コレクション MainDocumentPart[^]. そのため、各パーツを個別に処理する必要があります。 幸いなことに、すべてのパーツが共通の基本クラスを共有しています。 OpenXmlPart[^]、それらをリストにまとめてループで処理できます。 基本クラスを扱うので、使用する必要があります ルート要素[^] 子孫を取得するための開始点として、ドキュメントの代わりにプロパティ。
したがって、最終結果は次のようになります。
C#
var partsToUpdate = new List<OpenXmlPart> { doc.MainDocumentPart } .Concat(doc.MainDocumentPart.HeaderParts) .Concat(doc.MainDocumentPart.FooterParts); foreach (var part in partsToUpdate) { var elements = part.RootElement .Descendants<SdtElement>() .Where(s => s.SdtProperties.ChildElements.Count > 0 && s.SdtProperties.GetFirstChild<Tag>()?.Val == contentControlTag); foreach (var element in elements) { if (element == null) { continue; } var elementText = element.Descendants<Text>(); if (elementText != null) { var elementTextValue = elementText.FirstOrDefault(); if (elementTextValue != null) { elementTextValue.Text = text; } elementText.Skip(1).ToList().ForEach(t => t.Remove()); } } }
[ad_2]
コメント