Excel Addin – 如何在桌面版本中触发文档下载

我正在开发一个使用Office JS的Excel加载项,其中用户可以决定从远程服务器API打开文档。 在这种情况下,我需要从服务器API接收文件,并在Excel中打开它。

我已经find了这个答案: 编程方式使用JavaScript办公室api打开Excel文档

所以我看到API不允许这样做,答案build议使用JS触发下载。

所以我添加了一个iframe到插件页面:

 <iframe id="download" width="1" height="1" style="display:none"></iframe> 

并触发文件下载,我正在做:

 document.getElementById("download").src = downloadURL; 

当在线尝试时(Office 365),这是完美的。

但它不是使用桌面版本下载文档。

如何在桌面Excel应用程序中制作解决scheme?

目前,Excel中没有API来允许您以编程方式创build/打开文档。 Word 确实有,并有一个build议 – 目前正在调查中 – 对Excel也一样( https://officespdev.uservoice.com/forums/224641-feature-requests-and-feedback/suggestions/ 15034512 -open-replace-workbook-with-excel-js-api )。 但是,还没有我们可以分享的ETA。

话虽如此,你绝对可以popup一个“另存为”对话框。 事实上,如果您看过Script Lab ,那么我们的“出版”就是这样做的。

“导出发布”菜单选项

对于Script Lab,我们使用FileSaver NPM软件包 。 如果您想查看使用它的Script Lab代码,请参阅此文件 ,searchFileSaver.saveAs周围的区域。 但是,请注意,另存为对话框在Mac或iOS上似乎不能正常工作,因此目前我们仅将此function限制在桌面和Office Online(您可以在该方法的开始处看到一个平台检查)。

希望这可以帮助!

如果我了解你想要做什么,我有一个潜在的解决scheme。

使用包含在Windows中的后台智能传输服务( BITSAdmin )工具,通过命令行从URL以最less的代码下载文件的一种方法。

这个例子在后台下载一个烹饪图到你指定的位置(和文件名):

 Sub testDownloadFileFromCMD() Const source_downloadURL = "http://instantpot.com/wp-content/uploads/2017/08/Cooking-Time-Tables-1.pdf" Const dest_PathFilename = "C:\downloadedPDFFile.pdf" Shell ("bitsadmin /transfer wcb /priority high " & source_downloadURL & " " & dest_PathFilename) End Sub 

它显示进度窗口,但可以select隐藏。

您的url是否适用于BITS?

如果这不起作用,那么下载一个文件还有许多其他的方法,但我一定会需要更多的信息。 我不确定你的意思是“API 允许 Outlook365,但不允许 Excel下载文件”。 API是否给出错误? 更多关于这个文件…是文本/二进制文件? 什么样的文件。 这个尺寸是否足够大,会成为一个问题? 您是否可以通过其他方式下载文件,如直接使用浏览器?

我希望这有助于,如果没有,我会有更多的话要说! 🙂