我刚收到一份我提交的加载项的更改建议报告。它说Your add-in is not working in the Excel 2013 client on Windows 7 with Internet Explorer 11.
我一直在Excel 2016
和Excel Online
测试我的加载项。所以我刚刚安装了Excel 2013
(版本15.0.4841.1000
,其中包含SP1),实际上加载项不起作用。但似乎很少有事情有效......
例如,以下示例函数在haha
下的单元格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();
});
}
所以有人知道JavaScript API是否支持Excel 2013
?如果没有,许多专业人士将无法使用加载项,因为它们仍然使用Excel 2013
...
PS:我发现办公室商店中有很多加载项需要Excel 2013 or later
或Excel 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">
在我的Home.html
中,我有:
<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>
编辑2:我想以下设置相当于说加载项不应该在Excel 2013
中使用?
<Hosts>
<Host Name="Workbook" />
</Hosts>
<Requirements>
<Sets>
<Set Name="ExcelApi" MinVersion="1.2"/>
</Sets>
</Requirements>
<DefaultSettings>
...
</DefaultSettings>
答案 0 :(得分:9)
使用Office.js API时,您会看到每个方法都使用API集标识进行注释。例如:
这些API集对应于加载项将使用的Office版本。需求集列表及其支持位置可在http://dev.office.com/reference/add-ins/office-add-in-requirement-sets找到。
Excel 2016+(以及Office Online和Mac / iOS等效版本)支持仅 新的Office 2016主机特定API集(ExcelApi,WordApi等)。 API版本号(1.1
与1.2
与1.3
)对应于API的更新,这些更新是在Office 2016的RTM版本之后添加的(随{{1}一起提供} 盒子外面)。具有Office 365订阅(家庭或企业)的客户可以使用这些更新。购买Office 2016磁盘/ MSI产品的客户只能使用原始的1.1
API。
您可以通过两种方式使用需求集。如果您的加载项100%取决于特定的API集,则应将其列在清单文件中。这样,对于不支持该特定API集的Office版本,“插入/管理加载项”对话框甚至不会提供加载项。
另一方面,如果你只是在集合中使用了一些API,并且可以不使用(即使它有点降级的体验),你可以做“点亮场景”。也就是说,您将列出 所需的最低版本,然后使用运行时检查来检测特定API集是否可用。
具体示例:假设您有一个Excel加载项,用于创建新工作表并将数据输出到表中。这需要1.1
版本或更高版本。理想情况下,您也喜欢能够设置列宽,但ExcelApi 1.1
仅在range.format.columnWidth
中可用。您不希望阻止客户使用您的加载项(如果他们有旧版本) - 毕竟,您的大部分功能仍然有用,即使不是最佳 - 但是想要使用新的API。在这种情况下,您应该在清单中指定ExcelApi 1.2
,然后在JavaScript中执行运行时检查以确定是否可以运行ExcelApi 1.1
代码。即:
range.format.columnWidth
有关相关答案,请参阅Neat ways to get environment (i.e. Office version)
答案 1 :(得分:1)
Excel 2013支持某些功能,但有许多内容不支持,包括使用Excel.run()的任何内容。
http://dev.office.com/reference/add-ins/office-add-in-requirement-sets