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

如何遍历Word JavaScript API中的枚举以获取Word内置样式?

Word JS 枚举的工作机制说明

Word JavaScript API 中Word.Style这类枚举不属于普通JavaScript可枚举对象,它是Office运行时注入的代理对象,枚举项不会作为对象自有可枚举属性暴露,因此Object.keys()、Object.values()、数组式索引访问这类常规对象遍历方法全部无效,这是API本身的设计特性,不属于调用写法错误。

所有Office命名空间下的枚举(Word/Excel/PowerPoint等)都遵循这个机制,本身不支持直接遍历读取全量枚举项。

可行获取方案

根据实际需求选择对应方案即可:

  • 需要获取文档内真实可用的内置样式列表(推荐)
    不需要访问Word.Style枚举对象,直接读取文档的样式集合筛选内置样式即可,拿到的结果适配当前Word的语言环境,和用户在Word样式面板看到的内容完全一致,代码示例:
    await Word.run(async (context) => {
      const allStyles = context.document.styles;
      // 加载样式必要属性:是否内置、本地名称、样式类型
      allStyles.load("items/builtin, items/nameLocal, items/type");
      await context.sync();
    
      // 过滤得到所有内置样式
      const builtInStyles = allStyles.items.filter(style => style.builtin);
      // 输出内置样式的本地名称列表
      console.log(builtInStyles.map(style => style.nameLocal));
    });
    
  • 仅需要在业务逻辑中使用Style枚举做判断
    直接通过Word.Style.枚举值名的形式调用即可,代码编辑器的智能提示会自动列出所有可用枚举项,不需要提前遍历拿到全量值,示例:
    await Word.run(async (context) => {
      const paragraph = context.document.getSelection().paragraphs.getFirst();
      paragraph.load("styleBuiltIn");
      await context.sync();
    
      // 直接调用枚举值做判断,无需提前遍历枚举对象
      if (paragraph.styleBuiltIn === Word.Style.heading1) {
        console.log("当前段落是标题1样式");
      }
    });
    

注意:不要尝试用原生JS对象遍历方法读取任何Office JS枚举对象,这类代理对象的属性访问逻辑和普通JS对象不一致,遍历操作不会返回预期结果。

内容的提问来源于stack exchange,提问作者August Guenther

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 20:01:06