Невозможно объединить содержимое документа XML из файлов Word 2010 - PullRequest
1 голос
/ 30 августа 2011

Я использую элемент altChunkId для объединения файлов документов DOCX, но не могу увидеть содержимое элемента управления XML.

Я думаю, это потому, что ссылка, для которой XML для получения содержимого, находится в папке, в которую оно было объединено, а не в самой папке.

В Word 2007 файл показывает содержимое элемента управления содержимым, а в Word 2010 он пуст.

Шаги для воспроизведения:

  1. Открытое слово 2010.
  2. Перейти на вкладку разработчика.
  3. Добавить «Контроль содержимого в виде простого текста».
  4. Сохранить как a.docx
  5. Создание привязки XML с помощью Инструментария управления контентом Word 2007
  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. Откройте b.docx в Word 2010, и вы увидите, что элемент управления содержимым в виде простого текста пуст.

  9. Откройте b.docx в Word 2007, и вы увидите, что элемент управления содержимым в обычном тексте НЕ пуст.

1 Ответ

2 голосов
/ 14 ноября 2011

Это может быть связано с удалением MS поддержки XML в Word 2010 - см. word-2010-custom-xml

...