Я использую элемент altChunkId
для объединения файлов документов DOCX, но не могу увидеть содержимое элемента управления XML.
Я думаю, это связано с тем, что ссылка, для которой XML должен брать содержимое, находится в папке, в которую он был объединен, а не в самой папке.
В Word 2007 файл показывает содержимое элемента управления содержимым, а в Word 2010 он пуст.
Действия по воспроизведению:
- Открытое слово 2010.
- Перейдите на вкладку разработчика.
- Добавьте «Управление содержимым обычного текста».
- Сохранить как
a.docx
- Создайте привязку XML с помощью Набор инструментов управления содержимым Word 2007
- Скопируйте
a.docx
в новый файлb.docx
. Код для слияния:
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(); } } } }
Откройте
b.docx
в Word 2010, и вы увидите, что элемент управления текстовым содержимым пуст.- Откройте
b.docx
в Word 2007, и вы увидите, что элемент управления текстовым содержимым НЕ пуст.