Я использовал объект AltChunk
для копирования данных из файла docx
в элемент управления форматированным текстовым содержимым в другом файле. Копия работает нормально. Но теперь элемент управления содержимым нельзя преобразовать в SdtElement
в OpenXml или в ContentControl
в VSTO.
Это код, который я использовал
SdtElement sdtElement = destinationdocument.MainDocumentPart.Document.Body.Descendants<SdtElement>().Where(b => b.SdtProperties.GetFirstChild<Tag>() != null).FirstOrDefault();
string altChunkId = "AltChunkId" + Guid.NewGuid().ToString();
AlternativeFormatImportPart chunk = destinationdocument.MainDocumentPart.AddAlternativeFormatImportPart(AlternativeFormatImport PartType.WordprocessingML, altChunkId);
chunk.FeedData(File.Open("sourceFile", FileMode.OpenOrCreate));
AltChunk altChunk = new AltChunk();
altChunk.Id = altChunkId;
sdtElement.RemoveAllChildren();
sdtElement.Append(altChunk);
с первого раза код работает нормально. Но при втором запуске первая строка выдает исключение невозможности создания. Та же проблема возникает при использовании VSTO на стороне клиента: объект ContentControl
не может содержать элемент управления содержимым, в который был вставлен AltChunk
. Каким-то образом эта процедура повреждает элемент управления форматированным текстовым содержимым.
Есть ли что-то, что я делаю неправильно? Или есть лучшая альтернатива?