Я использую элемент 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, и вы увидите, что элемент управления содержимым в обычном тексте НЕ пуст.