如何知道Word.docx复选框(c#中的checkboxsymboltype)是否被选中?

问题描述 投票:0回答:2

我有一个 Word 文档 (document.docx),其中包含多个复选框。

我想知道检查哪一项。

我可以使用

获取文档中的所有复选框

使用 DocumentFormat.OpenXml.Wordprocessing;

 WordprocessingDocument documentFormA = WordprocessingDocument.Open(formALocation, true);

var checkBoxs = documentFormA.MainDocumentPart.Document.Body.Descendants<CheckBoxSymbolType>();

但这就是我得到的结果

我根本无法区分哪一个被选中,哪一个没有被选中。

c# .net-core ms-word office365 openxml
2个回答
1
投票

我创建了一个空白文档,并从开发人员选项卡中插入了 2 个复选框。然后我选中第一个框并关闭文档。

我能够像这样提取复选框的值:

using (var wordDoc = WordprocessingDocument.Open(@"C:\test\checkbox.docx", true))
{
    MainDocumentPart mainPart = wordDoc.MainDocumentPart;
    var document = mainPart.Document;
    
    var checkboxes = document.Body.Descendants<SdtContentCheckBox>();
    foreach (var checkbox in checkboxes)
    {
        Console.WriteLine(checkbox.Checked.Val);
    }
}

将输出:

1

0

希望这有帮助。

请注意,SdtContentCheckbox 位于 DocumentFormat.OpenXml.Office2010.Word 中,而不是 DocumentFormat.OpenXml.Wordprocessing


0
投票

我设法解决了同样的问题:

foreach (var checkBox in document.Descendants<CheckBox>()) {
    Checked state = checkBox.GetFirstChild<Checked>();
    if(state.Val.Value == true) {
    //checked
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.