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);
初めてコードが正常に機能するとき。ただし、2回目の実行では、最初の行で例外をキャストできませんがスローされます。クライアント側でVSTOを使用しているときにも同じ問題が発生し、ContentControl
オブジェクトはAltChunk
が挿入されたコンテンツコントロールを保持できません。どういうわけか、この手順はリッチテキストコンテンツコントロールを破壊します。
私が間違っていることはありますか?または、より良い代替手段はありますか?