如何使用 Office.context.ui.openBrowserWindow API 在 mac 上的 Office.js excel 加载项中下载文件?

问题描述 投票:0回答:1

我想从 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 编码字符串下载文件?

javascript excel office365 office-js office-addins
1个回答
0
投票

我建议您按照此操作Office 加载项 JavaScript FileDownload 不适用于 MAC

但我个人的经验是首先将文件保存在任何项目文件夹中,然后获取其 url 并像这样使用它:

  window.open(fileUrl, '_blank');

这对我来说效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.