大佬教程收集整理的这篇文章主要介绍了如何从 Word 文档复制富文本内容控件的内容并使用 Open XML SDK 删除控件本身,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试将富文本内容控件的内容从一个 Word 文档复制到另一个 Word 文档。每个富文本内容控件都包含一个文本块和一些纯文本内容控件。下面的代码似乎工作...
using (Wordprocessingdocument doc = Wordprocessingdocument.open(desTinationfile,truE))
{
MaindocumentPart mainPart = doc.MaindocumentPart;
Dictionary<String,SdtBlock> sdtBlocks = getContentControlsFromdocument(sourcefilE);
foreach (keyvaluePair<String,SdtBlock> sdtBlock in sdtBlocks)
{
SdtElement control = mainPart.document.body.Descendants<SdtElement>().Where(r =>
{
var tag = r.SdtPropertIEs.GetFirstChild<Tag>();
return tag != null && tag.Val == sdtBlock.Key.Tolower();
}).FirstOrDefault();
SdtContentBlock clonesdtContentBlock = (SdtContentBlock)sdtBlock.Value.Descendants<SdtContentBlock>().FirstOrDefault().Clone();
control.Parent.InsertAfter(clonesdtContentBlock,control);
control.Remove();
}
mainPart.document.Save();
}
但是当我尝试使用下面的代码在 desTinationfile
中查找所有内容控件时
String key = "tag_name";
List<SdtElement> controls = mainPart.document.body.Descendants<SdtElement>().Where(r =>
{
var tag = r.SdtPropertIEs.GetFirstChild<Tag>();
return tag != null && tag.Val == key.Tolower();
}).ToList();
我找不到那些在从 sourcefile
复制的富文本内容控件中的内容。换句话说,我只想复制富文本内容控件的内容,而不复制控件本身。
更新:
为了简化问题。我有一个富文本内容控件,它可能有纯文本和几个纯文本内容控件。我所需要的只是复制(仅)此富文本内容控件中的内容,该控件将整个内容包装到另一个 Word 文档中。
与此同时,我设法自己解决了这个问题。这是解决方案,因此它可能对其他人有用。
using (WordprocessingDocument doc = WordprocessingDocument.open(@"C:\tmp\test-1.docx",truE))
{
MainDocumentPart mainPart = doc.MainDocumentPart;
foreach (var conditialTemplate in conditionalTemplates)
{
List<SdtElement> controls = mainPart.Document.body.Descendants<SdtElement>().Where(r =>
{
var tag = r.SdtProperties.GetFirstChild<Tag>();
return tag != null && tag.Val == conditialTemplate.ToLower();
}).ToList();
foreach (var control in controls)
{
if (control != null)
{
SdtProperties props = control.Elements<SdtProperties>().FirstOrDefault();
Tag tag = props.Elements<Tag>().FirstOrDefault();
Console.WriteLine("Tag: " + tag.Val);
String theRightBlock = "A";
SdtBlock theRightSdtBlock = GetTheRightConditionalSdtBlock(theRightBlock,tag.Val);
if (theRightSdtBlock != null)
{
OpenXmlElement parent = control.Parent;
SdtBlock clone = new SdtBlock();
clone = (SdtBlock)theRightSdtBlock.Clone();
var elements = clone.GetFirstChild<SdtContentBlock>().ChildElements.ToList();
elements.Reverse();
elements.ForEach(child =>
{
parent.InsertAfter(child.Clone() as OpenXmlElement,control);
});
control.Remove();
}
}
}
}
mainPart.Document.Save();
}
以上是大佬教程为你收集整理的如何从 Word 文档复制富文本内容控件的内容并使用 Open XML SDK 删除控件本身全部内容,希望文章能够帮你解决如何从 Word 文档复制富文本内容控件的内容并使用 Open XML SDK 删除控件本身所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。