我使用AltChunk
对象将数据从docx
文件复制到另一个文件中的富文本内容控件。副本工作正常。但是现在内容控件不能转换为SdtElement
OpenXml 中的 a 或ContentControl
VSTO 中的 a。
这是我使用的代码
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
插入的内容控件。不知何故,此过程破坏了富文本内容控件。
有什么我做错了吗?还是有更好的选择?