我有一个 Word 文档 (document.docx),其中包含多个复选框。
我想知道检查哪一项。
我可以使用
获取文档中的所有复选框使用 DocumentFormat.OpenXml.Wordprocessing;
WordprocessingDocument documentFormA = WordprocessingDocument.Open(formALocation, true);
var checkBoxs = documentFormA.MainDocumentPart.Document.Body.Descendants<CheckBoxSymbolType>();
我根本无法区分哪一个被选中,哪一个没有被选中。
我创建了一个空白文档,并从开发人员选项卡中插入了 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
我设法解决了同样的问题:
foreach (var checkBox in document.Descendants<CheckBox>()) {
Checked state = checkBox.GetFirstChild<Checked>();
if(state.Val.Value == true) {
//checked
}
}