私はopen xml SDK 2.0を使用していますが、これは初めてです。
「hello.docx」という名前の Word 2007 ドキュメントで、実際にクイックパーツ (コンテンツ コントロールを含む) を作成しました。ここで、「hello.docx」という名前の同じドキュメントの別の場所にクイックパーツをコピーする必要があります。私はこの投稿http://www.techques.com/question/1-3448297/Replaceing-Content-Controls-in-OpenXMLに非常に感謝しており、同じことがスタック オーバーフロー フォーラムに投稿されており、非常に感謝しています。 )...この投稿は、コンテンツ コントロールを削除するだけで、コンテンツはコンテンツ コントロールに保持します。
上記のリンクの助けを借りて、コードを変更してコンテンツ コントロールを複製し、同じドキュメントに追加することができました (コードのこの部分は機能しています)。しかし、私はinnerTextに問題があります。開いている Xml 要素の innerText を置き換えたのですが、ドキュメントに反映されません。
public static void AddingSdtBlock(string filename, string sdtBlockTag)
{
using (WordprocessingDocument doc = WordprocessingDocument.Open(filename,true))
{
MainDocumentPart mainDocumentPart = doc.MainDocumentPart;
List<SdtBlock> sdtList = mainDocumentPart.Document.Descendants<SdtBlock>().ToList();
SdtBlock sdtA = null;
foreach (SdtBlock sdt in sdtList)
{
if (sdt.SdtProperties.GetFirstChild<Tag>().Val.Value == sdtBlockTag)
{
sdtA = sdt;
break;
}
}
SdtBlock cloneSdkt = (SdtBlock)sdtA.Clone();
OpenXmlElement sdtc = cloneSdkt.GetFirstChild<SdtContentBlock>();
// OpenXmlElement parent = cloneSdkt.Parent;
OpenXmlElementList elements = cloneSdkt.ChildElements;
// var mySdtc = new SdtContentBlock(cloneSdkt.OuterXml);
foreach (OpenXmlElement elem in elements)
{
string innerxml= elem.InnerText ;
if (innerxml.Length>0)
{
string modified = "Class Name : My Class.Description : mydesc.AttributesNameDescriptionMy Attri name.my attri desc.Operations NameDescriptionmy ope name.my ope descriptn.";
string replace= elem.InnerText.Replace(innerxml, modified);
// mainDocumentPart.Document.Save();
}
// string text = parent.FirstChild.InnerText;
// parent.Append((OpenXmlElement)elem.Clone());
}
mainDocumentPart.Document.Body.AppendChild<SdtBlock>(cloneSdkt);
//sdtA.Remove();
}
}
openXML 要素の置換文字列がドキュメントに反映されません。どんな助けでも本当に感謝しています。
前もって感謝します、