OpenXML APIを使用してdocxテンプレートを変更していて、問題が発生しました。OpenXMLでWord文書を操作するときにOpenXmlElementからDocumentPartを取得
イメージを特定の場所に挿入する必要があります。その場所は、ドキュメントのメイン部分、フッターのヘッダーに含めることができるコンテンツコントロール要素で定義されています。このような
私は取得していたコンテンツcontroll:その後、私は今、私の問題がある。この
internal static OpenXmlElement InsertImage(OpenXmlPart documentPart, Stream stream, string fileName, int imageWidth, int imageHeight)
{
// actual implementation that is tested and works
}
を経由して文書の正しい部分に画像を挿入する必要がパイプラインダウン
static IEnumerable<TElement> GetDecendants<TElement>(OpenXmlPart part) where TElement : OpenXmlElement
{
var result = part.RootElement
.Descendants()
.OfType<TElement>();
return result;
}
イメージで置き換える必要のあるContentControl要素が見つかった場合、documentPart
への参照がありません。参照番号がSdtRun
またはSdtBlock
の場合のみ参照できます。
documentPart
に移動する方法はありますか?SdtRun
? .Parent
を確認しましたが、OpenXmlElement
からOpenXmlPart
に移動する方法が見つかりませんでした。これらは異なる階層にあります。
うわーから短絡Null-conditional Operatorsを利用しています!それはたくさんの疑問符です!私は仕事に戻るときにそれをチェックします。ありがとう! – trailmax
これは一般的に動作します。しかし、 'xmlElement'が' Header'や 'Document'や' Footer'のときには失敗します。同じ種類の祖先はありません。しかし、一般的な考え方と私を 'Ancestors <>()'(私が前に知らなかった方法)に向けるのは良いです – trailmax
実際に 'Header'、' Footer'と 'Document'は' OpenXmlPart'であり、 'OpenXmlElement'です。このメソッドを呼び出すと、コンパイルされずに実行されることもありません。私はこの方法があなたを待つべきだと思う。 – Taterhead