Word Open XML SDK, установите выбранное значение раскрывающегося списка - PullRequest
0 голосов
/ 24 апреля 2020

Проще говоря, у меня есть файл c: \ dropdowntest.docx, в котором есть только один выпадающий список. В раскрывающемся списке есть две опции: «Option1» и «Option2». Файл сохраняется, так что выбирается «Option1». Как выбрать «Option2» с помощью Open XML SDK в C#?

Вот начало кода, поэтому я, например, могу сослаться на выпадающий список:

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;

1 Ответ

1 голос
/ 26 апреля 2020

Вот как вы можете заменить ранее выбранную опцию последней из 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;
        }
    }
}

Также на всякий случай вам, вероятно, следует проверить эти ответы они относятся к тому, что если у вас нет выбранной опции (в SdtContentRun нет элемента Run), или что если у вас есть SdtBlock вместо SdtRun, et c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...