使用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
相关产品推荐
相关产品推荐

