是否可以将 WordprocessingML 的“块”添加到 word 文档(而不是整个文档)?我目前有一个用作模板的 docx,它包含一个 ContentControl。我想通过 AltChunk 插入 WordprocessingML 的一部分,但我插入的内容呈现为文本,而不是像我希望的那样被实现到文档中。
我目前使用的方法是:
var main = doc.MainDocumentPart;
// Create new AltChunk
string altChunkId = "altChunkId";
AlternativeFormatImportPart chunk = main.AddAlternativeFormatImportPart(AlternativeFormatImportPartType.WordprocessingML, altChunkId);
// Populate altChunk. stream = MemoryStream containing WordprocessingML
chunk.Feed(stream);
// Replace content control with altChunk info
AltChunk altChunk = new AltChunk();
altChunk.Id = altChunkId;
// Get SdtBlock to replace
SdtBlock block = ContentControlHelpers.GetSdtBlock(doc, "ContentControlId");
OpenXmlElement parent = block.Parent;
parent.InsertAfter(altChunk, block);
block.Remove();
我尝试插入的 WordproccessingML 示例如下(通过 XML + XSLT 生成。):
<w:p>
<w:pPr>
<w:pStyle w:val="heading2" />
</w:pPr>
<w:r>
<w:t>Product 1</w:t>
</w:r>
</w:p>
<w:p>
<w:pPr>
<w:pStyle w:val="heading3" />
</w:pPr>
<w:r>
<w:t>Europe</w:t>
</w:r>
</w:p>
<w:p>
<w:pPr>
<w:pStyle w:val="heading4" />
</w:pPr>
<w:r>
<w:t>France</w:t>
</w:r>
</w:p>
我已经尝试在它周围添加<w:document>
and<w:body>
元素来包装它,但无论我在尝试什么,文档都只是将 WordprocessingML 呈现为文本,如上所示,而不是将其嵌入到文档中。
关于我可能出错的地方有什么建议吗?