Ms word 在Word内容控件中使用富文本插入某些段落的正确方法是什么?
我试图使用OpenXMLSDK在Word内容控件中插入一些段落 我的代码似乎有效(在word文件中可以看到段落)。但是,无法编辑控件。我只能在插入新内容之前删除整个内容 如何模拟手动复制/粘贴到内容控件中 仅供参考,以下是我的代码:Ms word 在Word内容控件中使用富文本插入某些段落的正确方法是什么?,ms-word,openxml-sdk,Ms Word,Openxml Sdk,我试图使用OpenXMLSDK在Word内容控件中插入一些段落 我的代码似乎有效(在word文件中可以看到段落)。但是,无法编辑控件。我只能在插入新内容之前删除整个内容 如何模拟手动复制/粘贴到内容控件中 仅供参考,以下是我的代码: var mainPart = package.MainDocumentPart; var sdtRuns = mainPart.Document.Descendants<SdtElement>().Where(run => run.SdtProp
var mainPart = package.MainDocumentPart;
var sdtRuns = mainPart.Document.Descendants<SdtElement>().Where(run => run.SdtProperties.GetFirstChild<Tag>().Val.Value == "TagOfMyContentControl");
foreach (var sdtBlock in sdtRuns)
{
List<Paragraphs> paragraphs = GetParapraphsFromSomewhere();
var contentControlParagraph = sdtBlock.Descendants<SdtContentBlock>().First();
contentControlParagraph.RemoveAllChildren();
contentControlParagraph.Append(paragraphs);
}
mainPart.Document.Save();
var mainPart=package.MainDocumentPart;
var sdtRuns=mainPart.Document.subjects().Where(run=>run.SdtProperties.GetFirstChild().Val.Value==“TagOfMyContentControl”);
foreach(sdtRuns中的变量sdtBlock)
{
列出段落=GetParapraphsFromsomeone();
var contentcontrolparagration=sdtBlock.subjects().First();
ContentControl段落.RemoveAllChildren();
内容控制段落。附加(段落);
}
mainPart.Document.Save();
PS:I更一般地说,是否有任何资源可以解释Word ML元素的用途和层次结构?您的代码几乎可以模拟复制粘贴到内容控件中。以下两行是删除内容控件中所有段落的行:
var contentControlParagraph = sdtBlock.Descendants<SdtContentBlock>().First();
contentControlParagraph.RemoveAllChildren();
第三行选择第二行内容控件内的所有段落。然后在现有的第二段之后插入一个新段。下图是运行此代码后的上述文件:
要回答你的PS问题,你可以尝试阅读一些正式的内容。这不容易阅读,但它是权威的规范。有一本更通用(但过时)的免费电子书,书名为
我每个月参考一次这些信息。OpenXml的第一章介绍了WordprocessingML
,第39页有一节介绍了结构化文档标记,其中概述了内容控件
var mainPart = document.MainDocumentPart;
var sdtRuns = mainPart.Document.Descendants<SdtElement>().Where(run => run.SdtProperties.GetFirstChild<Tag>().Val.Value == "CopyPasteCC");
sdtRuns.ElementAt(0).Descendants<Paragraph>().ElementAt(1).InsertAfterSelf(
new Paragraph(new Run(new Text("Hello - this is new Copy Paste paragraph")))
);
mainPart.Document.Save();