Word 打开XML SDK,设置下拉列表的选中值

Word Open XML SDK, set selected value of dropdown list

简单地说,我有一个 c:\dropdowntest.docx 文件,其中只有一个下拉列表。下拉列表有两个选项,"Option1" 和 "Option2"。保存文件,以便 "Option1" 被 selected。如何在 C# 中使用 Open XML SDK select "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;
        }
    }
}

另外,为了以防万一,您可能还应该检查 these answers,它们会解决诸如您没有选择选项([=13 中没有 Run 元素)之类的问题=]), 或者如果你有 SdtBlock 而不是 SdtRun, 等等