Office-js Excel: 获取新保存文件的文件名
Office-js Excel: Get filename of newly saved file
如何获取新保存文件的文件名?
通常,我可以使用以下方式获取文件名:
Office.context.document.url
但是,当用户打开一个新工作簿时,它并没有真正的文件名,而且奇怪的是,即使在他们保存之后,这行代码也不起作用。
相反,他们必须保存、关闭然后重新打开文件,以便该代码读取他们的文件名。
有没有办法在保存后刷新 Office 上下文,或者有其他解决方法?
我们可以获得给定文档的文件路径。 getFilePropertiesAsync(options, callback)
var fileProperties = Office.context.document.getFilePropertiesAsync([, options], callback);
var fileUrl = fileProperties.url;
- 如果您从文档库打开,您将获得完整的 URL 文档,包括文件名。
- 如果您从本地驱动器打开文件,它将为您提供文档的完整路径(也包括文件名)
- 如果文件还没有保存,它将return空。
感谢@Nate Radebaugh 指出:getFilePropertiesAsync(options, callback)
这按预期工作并且能够提供新保存文档的文件名。
因为我更喜欢 async/await 回调,所以我想我会把这个添加到他的回答中:
async loadFileName() {
return new Promise((resolve) => {
Office.context.document.getFilePropertiesAsync(null, (res) => {
if (res && res.value && res.value.url) {
let name = res.value.url.substr(res.value.url.lastIndexOf('\') + 1);
resolve(name);
}
resolve('');
})
});
}
res.value.url
returns 整个文件 url/path (C:\Users\username\Desktop\Book1.xlsx) 在我的例子中,因为我只想要文件名 (Book1.xlsx), 我trim它就结束了。
如何获取新保存文件的文件名? 通常,我可以使用以下方式获取文件名:
Office.context.document.url
但是,当用户打开一个新工作簿时,它并没有真正的文件名,而且奇怪的是,即使在他们保存之后,这行代码也不起作用。 相反,他们必须保存、关闭然后重新打开文件,以便该代码读取他们的文件名。
有没有办法在保存后刷新 Office 上下文,或者有其他解决方法?
我们可以获得给定文档的文件路径。 getFilePropertiesAsync(options, callback)
var fileProperties = Office.context.document.getFilePropertiesAsync([, options], callback);
var fileUrl = fileProperties.url;
- 如果您从文档库打开,您将获得完整的 URL 文档,包括文件名。
- 如果您从本地驱动器打开文件,它将为您提供文档的完整路径(也包括文件名)
- 如果文件还没有保存,它将return空。
感谢@Nate Radebaugh 指出:getFilePropertiesAsync(options, callback)
这按预期工作并且能够提供新保存文档的文件名。
因为我更喜欢 async/await 回调,所以我想我会把这个添加到他的回答中:
async loadFileName() {
return new Promise((resolve) => {
Office.context.document.getFilePropertiesAsync(null, (res) => {
if (res && res.value && res.value.url) {
let name = res.value.url.substr(res.value.url.lastIndexOf('\') + 1);
resolve(name);
}
resolve('');
})
});
}
res.value.url
returns 整个文件 url/path (C:\Users\username\Desktop\Book1.xlsx) 在我的例子中,因为我只想要文件名 (Book1.xlsx), 我trim它就结束了。