咨询:Office.js无法获取Word中Checkbox类型Content Controls的原因与方法
问题解答
一、为何Checkbox类型控件不在doc.contentControls集合中?
这取决于你插入的Checkbox类型:
- 如果是表单控件/ActiveX控件:这类控件不属于Word的「内容控件(Content Controls)」体系,是独立的表单域控件,因此不会出现在
doc.contentControls集合里。 - 如果是内容控件类型的复选框:理论上会在集合中,但如果你的代码未正确加载对应属性,可能导致输出时看不到(不过这类情况控制台依然会输出该控件,只是
type属性为checkBox)。
你可以通过右键控件区分:右键后显示「内容控件属性」则是内容控件;显示「表单域选项」则是表单控件。
二、如何用Office.js访问这类控件?
1. 访问内容控件类型的复选框
修改代码,加载复选框特有的属性,并可按类型筛选:
await Word.run(async (context) => { const doc = context.document; const contentControls = doc.contentControls; // 加载复选框需要的属性:type、tag、checked等 contentControls.load("items, tag, type, checked"); await context.sync(); // 筛选出所有复选框类型的内容控件 const checkboxControls = contentControls.items.filter(control => control.type === Word.ContentControlType.checkBox); checkboxControls.forEach(control => { console.log("Tag:", control.tag, "是否选中:", control.checked); }); });
2. 访问表单控件类型的复选框
这类控件属于inlineShapes(内嵌形状)集合,通过类型筛选访问:
await Word.run(async (context) => { const doc = context.document; const inlineShapes = doc.inlineShapes; inlineShapes.load("items, type, title"); await context.sync(); // 筛选出表单控件的复选框(type对应Word.InlineShapeType.formCheckBox) const checkboxFormControls = inlineShapes.items.filter(shape => shape.type === Word.InlineShapeType.formCheckBox); checkboxFormControls.forEach(shape => { console.log("标题:", shape.title, "是否选中:", shape.formCheckBox.checked); }); });
内容的提问来源于stack exchange,提问作者ak2002
相关产品推荐
相关产品推荐

