JavaScript API不适用于Excel 2013?

Sof*_*mur 4 ms-office office-js

我刚收到一份我提交的加载项的更改建议报告.它说Your add-in is not working in the Excel 2013 client on Windows 7 with Internet Explorer 11.

我一直在测试我的插件中Excel 2016Excel Online.所以我刚安装Excel 2013(版本15.0.4841.1000,包括SP1),确实加载项不起作用.但似乎很少有事情可行......

例如,以下示例函数haha在Cell A1下写入Excel Online,而在其中没有任何内容Excel 2013.

function test () {
    Excel.run(function (ctx) {
        var range = ctx.workbook.worksheets.getItem("Sheet1").getRange("A1");
        range.values = [["haha"]];
        return ctx.sync();
    });
}
Run Code Online (Sandbox Code Playgroud)

那么有人知道JavaScript API是否支持Excel 2013?如果没有,许多专业人士将无法使用加载项,因为他们仍然Excel 2013...

PS:我看到办公室商店中有很多插件需要Excel 2013 or laterExcel 2013 Service Pack 1 or later.如果JavaScript API不支持Excel 2013,那么如何开发这些加载项(例如,Stock Connector)?

编辑1:在我的清单xml中:

<?xml version="1.0" encoding="UTF-8"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0" xmlns:ov="http://schemas.microsoft.com/office/taskpaneappversionoverrides" xsi:type="TaskPaneApp">
Run Code Online (Sandbox Code Playgroud)

在我Home.html,我有:

<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>
Run Code Online (Sandbox Code Playgroud)

编辑2:我猜以下设置相当于说加载项不应该用于Excel 2013

<Hosts>
  <Host Name="Workbook" />
</Hosts>
<Requirements>
  <Sets>
    <Set Name="ExcelApi" MinVersion="1.2"/>
  </Sets>
</Requirements>
<DefaultSettings>
  ...
</DefaultSettings>
Run Code Online (Sandbox Code Playgroud)

Mic*_*oft 9

使用Office.js API时,您将看到每个方法都使用API​​集标识进行注释.例如:

在此输入图像描述

这些API集对应于加载项将使用的Office版本.可以在http://dev.office.com/reference/add-ins/office-add-in-requirement-sets上找到需求集列表及其支持位置.

任何新的Office 2016主机特定API集(ExcelApi,WordApi等)在Excel 2016+(以及Office Online和Mac/iOS等效项)上受支持.API版本号(1.1vs. 1.2vs. 1.3)对应于API的更新,这些更新是在Office 2016的RTM版本(随附1.1开箱即用)之后添加的.具有Office 365订阅(家庭或企业)的客户可以使用这些更新.购买Office 2016磁盘/ MSI产品的客户只能使用原始1.1API.

您可以通过两种方式使用需求集.如果您的加载项100%取决于特定的API集,则应将其列在清单文件中.这样,对于不支持该特定API集的Office版本,"插入/管理加载项"对话框甚至不会提供加载项.

另一方面,如果你只是在集合中使用了一些API,并且可以不使用(即使它有点降级的经验),你可以做"点亮场景".也就是说,你将列出可能的最低版本,您需要,然后使用运行时检查来检测特定API集是否可用.

具体示例:假设您有一个Excel加载项,用于创建新工作表并将数据输出到表中.这需要ExcelApi 1.1版本或更高版本.理想情况下,您希望能够设置列宽,但range.format.columnWidth仅适用于ExcelApi 1.2.你不想阻止客户使用你的插件,如果他们有一个旧版本 - 毕竟,你的大部分功能仍然可以工作,即使不是最佳 - 但你确实想要使用新的蜜蜂.在这种情况下,您应该ExcelApi 1.1在清单中指定,然后在运行时检查JavaScript以确定是否可以运行range.format.columnWidth代码.即:

if (Office.context.requirements.isSetSupported("ExcelApi", 1.2 )
{
   range.format.columnWidth = 25;
}
Run Code Online (Sandbox Code Playgroud)

有关相关答案,请参阅获取环境的简洁方法(即Office版本)