我想从 Excel 加载项下载 Base64 编码的文件。当我从浏览器中尝试时,以下代码成功下载了文件:
function run() {
const sampleBase64Data = 'VGVzdCBhdHRhY2htZW50';
const binaryData = atob(sampleBase64Data);
const arrayBuffer = new ArrayBuffer(binaryData.length);
const uint8Array = new Uint8Array(arrayBuffer);
for (let i = 0; i < binaryData.length; i++) {
uint8Array[i] = binaryData.charCodeAt(i);
}
const blob = new Blob([uint8Array], { type: 'application/octet-stream' });
const downloadLink = document.createElement('a');
downloadLink.href = URL.createObjectURL(blob);
downloadLink.download = 'sampleFile.txt';
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
}
但是,此方法不适用于 macOS 版本的 Excel 以及 Windows 上安装的 Excel。解决方法是使用 Office.context.ui.openBrowserWindow(url);。如果我在上述示例中提供文件的对象 URL,则此 API 将不起作用。如何使用 Office.context.ui.openBrowserWindow(url); 从其 base64 编码字符串下载文件?
我建议您按照此操作Office 加载项 JavaScript FileDownload 不适用于 MAC
但我个人的经验是首先将文件保存在任何项目文件夹中,然后获取其 url 并像这样使用它:
window.open(fileUrl, '_blank');
这对我来说效果很好。