简单地说,我有一个c:dropdowntest.docx文件,里面只有一个下拉列表。下拉列表有两个选项,"选项1 "和 "选项2"。保存文件时,"选项1 "被选中。如何使用C#中的Open XML SDK来选择 "Option2"?
这里有一个开始的代码,所以我能够参考下拉列表的例子。
private static void LoopElements(WordprocessingDocument wordDocument)
{
List<SdtElement> sdtelements = wordDocument.MainDocumentPart.Document.Descendants<SdtElement>().ToList();
foreach (var contentcontrol in sdtelements)
{
var listitems = contentcontrol.Descendants<ListItem>().ToList();
if (listitems.Count > 0)
{
SdtRun xStdRun = (SdtRun)contentcontrol;
下面是如何将之前选择的选项替换为最后一个选项的方法。listitems
:
private static void LoopElements(WordprocessingDocument wordDocument)
{
List<SdtElement> sdtelements = wordDocument.MainDocumentPart.Document.Descendants<SdtElement>().ToList();
foreach (var contentcontrol in sdtelements)
{
var listitems = contentcontrol.Descendants<ListItem>().ToList();
if (listitems.Count > 0)
{
SdtRun xStdRun = (SdtRun)contentcontrol;
SdtContentRun xStdContentRun = xStdRun.SdtContentRun;
Text xStdContentText = xStdContentRun.GetFirstChild<Run>().GetFirstChild<Text>();
xStdContentText.Text = listitems.Last().DisplayText;
}
}
}
另外,为了以防万一,你也许应该检查 这些答案 以及,他们解决了一些问题,比如说如果你没有选定的选项怎么办(没有任何的 Run
中的元素 SdtContentRun
),或者如果你有 SdtBlock
而不是 SdtRun
、等。