Excel 2019商用版加载项IE11环境下获取工作簿名称报错求助
解决Excel 2019加载项获取工作簿名称的问题
针对Office 2019 Excel(对应Excel JS API 1.8及以下版本),workbook.name属性是1.9+版本才引入的,直接调用会触发API不存在的报错;同时出现<Permission denied>大概率是旧版本API的权限机制差异导致。推荐以下两种兼容方案:
方案一:通过文档URL解析文件名
利用Office.context.document.url获取完整文档路径,再从中提取文件名,无需调用context.sync(),兼容性拉满:
function getWorkbookName() { const fullUrl = Office.context.document.url; if (!fullUrl) return ""; // 适配本地路径和网络路径的分隔符 const fileName = fullUrl.split(/[\/\\]/).pop(); // 可选:移除.xlsx/.xls等扩展名 return fileName.replace(/\.[^\.]+$/, ""); }
方案二:加载兼容的文档属性
通过Excel JS API加载工作簿的properties/title属性,这在1.8版本中是支持的:
async function getWorkbookNameViaProperties() { try { const workbook = context.workbook; workbook.load("properties/title"); await context.sync(); return workbook.properties.title; } catch (error) { console.error("获取工作簿名称失败:", error); return ""; } }
注意:如果文档未保存,properties.title可能为空,此时可以回退到方案一的URL解析方式。
另外,确保加载项清单(manifest.xml)中声明了ReadDocument或ReadWriteDocument权限,避免因权限不足触发报错。
内容的提问来源于stack exchange,提问作者na1taneja2821
相关产品推荐
相关产品推荐

