1

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

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

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

重现步骤:

  1. 开放词 2010。
  2. 转到开发人员选项卡。
  3. 添加“纯文本内容控件”。
  4. 另存为a.docx
  5. 使用Word 2007 内容控制工具包创建 XML 绑定
  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,你会看到纯文本内容控件不是空的。
4

0 回答 0