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

使用Excel JavaScript API检测删除线文本并排序时遇PropertyNotLoaded错误

问题解决:Excel JavaScript API 检测删除线并排序时的 PropertyNotLoaded 错误

错误原因

你直接将strikethrough作为顶级属性添加到load()方法中,但它是format.font的子属性,Excel JavaScript API要求必须通过完整的嵌套属性路径加载这类深层属性,否则无法读取对应值,触发PropertyNotLoaded错误。

修正后的代码

$("#run").click(() => tryCatch(run));
async function run() {
  await Excel.run(async (context) => {
    const sheet = context.workbook.worksheets.getActiveWorksheet();
    const range = sheet.getRange("A5:M500");
    // 正确加载嵌套属性:format.font.strikethrough,用斜杠表示路径
    let dataRange = range.load(["rowCount", "format/font/strikethrough"]);
    await context.sync();

    for (let row = 0; row < dataRange.rowCount; row++) {
      dataRange.getRow(row).format.fill.clear();
      // 正确访问已加载的删除线属性
      if (dataRange.getCell(row, 0).format.font.strikethrough) {
        dataRange.getRow(row).format.font.color = "Red";
      }
    }   
    
    // 执行排序:先按字体颜色降序(红色行排后面),再按A列升序
    const sortFields = [
      {
        key: 1,
        sortOn: Excel.SortOn.fontColor,
        ascending: false
      },
      {
        key: 0,
        ascending: true
      }
    ];
    range.sort.apply(sortFields);

    await context.sync();
  });
}

/** 默认错误处理工具 */
async function tryCatch(callback) {
  try {
    await callback();
  } catch (error) {
    console.error(error);
  }
}

关键修改点

  • 加载属性修正:将load()的参数改为["rowCount", "format/font/strikethrough"],通过斜杠/指定嵌套属性的完整路径,确保Excel API能正确读取删除线状态。
  • 移除冗余加载:删除了不需要的values、font等属性,只加载实际需要的内容,提升性能。
  • 简化条件判断:直接用if (xxx.strikethrough)替代== true,逻辑更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 00:00:17