2012-08-08 171 views
0

是否可以將WordprocessingML的「塊」添加到word文檔(而不是整個文檔)?我目前有一個我用作模板的docx,它包含一個ContentControl。我想通過AltChunk插入一段WordprocessingML,但插入的內容呈現爲文本,而不是像我希望的那樣在文檔中實現。將WordprocessingML添加到word文檔中

我目前使用的方法是:

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><w:body>元素來包裝它,但無論我想要的文檔只是將WordprocessingML作爲文本,因爲它顯示在上面,而不是將其嵌入到文檔中。

任何關於我可能會出錯的建議?

回答

1
+0

感謝埃裏克,這看起來很有希望,但是我收到錯誤 「不是一個開放的XML文檔。」當使用DocumentBuilder.BuildDocument()時。這是因爲我的片段不是完整的wml文檔?無論如何圍繞這個? – Fermin 2012-08-13 10:09:58

相關問題