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
, 等等
简单地说,我有一个 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
, 等等