2011-08-29 94 views
1

我正在使用altChunkId元素合并DOCX文档文件,但无法查看控件XML元素的内容。无法合并来自Word 2010文件的XML文档内容

我认为这是因为XML所采取内容的引用来自它被合并到的文件夹而不是文件夹本身。

在Word 2007中,该文件显示内容控件的内容,而在Word 2010中则为空白。

重现步骤:

  1. 打开Word 2010
  2. 转到开发人员选项卡。
  3. 添加“纯文本内容控制”。
  4. 另存为a.docx
  5. 创建XML与Word 2007 content control toolkit
  6. 复制a.docx绑定到一个新的文件b.docx
  7. 代码合并:

    using System; 
    using System.Collections.Generic; 
    using System.IO; 
    using System.IO.Packaging; 
    using System.Linq; 
    using System.Text; 
    using System.Xml; 
    using DocumentFormat.OpenXml; 
    using DocumentFormat.OpenXml.Packaging; 
    using DocumentFormat.OpenXml.Spreadsheet; 
    using DocumentFormat.OpenXml.Wordprocessing; 
    
    class Class1 
    { 
        static void Main(string[] args) 
        { 
         string doc2 = @"b.docx"; 
         string doc1 = @"a.docx"; 
         using (var myDoc = WordprocessingDocument.Open(doc2, true)) 
         { 
          string altChunkId = "AltChunkId1"; 
          var mainPart2 = myDoc.MainDocumentPart; 
    
          var chunk = mainPart2.AddAlternativeFormatImportPart(
          AlternativeFormatImportPartType.WordprocessingML, altChunkId); 
          using (var fileStream = File.Open(doc1, FileMode.Open)) 
          { 
           chunk.FeedData(fileStream); 
           AltChunk altChunk = new AltChunk(); 
           altChunk.Id = altChunkId; 
           mainPart2.Document.Body.InsertAfter(altChunk, mainPart2.Document.Body.Elements<Paragraph>().Last()); 
           mainPart2.Document.Save(); 
          } 
         } 
        } 
    } 
    
  8. 与Word 2010打开b.docx,你会看到纯文本内容的控制是空的。

  9. 使用Word 2007打开b.docx,您将看到纯文本内容控件不为空。
+0

您可以发布b.docx的地方,我们可以看一下吗? – JasonPlutext

+0

你可以分享代码和文档吗? MS已经删除了自定义XML支持,但是因为您使用的数据绑定内容控件不应该是问题。 –

回答