You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 01:22:43