使用JavaScript API获取Excel范围

我正在构build一个应用程序的办公室(桌面Excel),我正在寻找JavaScript API的Office版本1.1中的函数,将返回列的地址和用户select的行。 结果如“A1:C3”。

我尝试使用Office.context.document.getSelectedDataAsync()但它只是得到我的价值观。 我需要知道他们的地址,所以我可以显示在我的应用程序。 我的代码是这样的:

 Office.context.document.getSelectedDataAsync(Office.CoercionType.Matrix, function (asyncResult) { console.log(asyncResult.value); }); 

asyncResult只给我一个数组值。 我无法在MSDN或Google上find任何有用的帮助。 任何帮助表示赞赏。

这是非常晚,但我希望这个替代scheme可以用于使用Excel 2016的人员。您可以使用工作簿上的getSelectedRange函数来获取当前选定的范围,然后像下面加载地址属性。

 Excel.run(function (ctx) { var selectedRange = ctx.workbook.getSelectedRange(); selectedRange.load('address'); return ctx.sync().then(function () { //selectedRange.address is now available to use }).catch(function (error) { //handle }); }).catch(function (error) { //handle }); 

下面是一个完整的工作示例函数:只需在此函数中添加一个testingbutton即可。 您还需要一个Div来使用writeToPage函数来编写结果(或修改您自己的输出区域)。

 function get_rangecoords() { Office.context.document.bindings.addFromPromptAsync(Office.BindingType.Matrix, { id: "MyMatrixBinding" }, function (asyncResult) { //NOW DO OUTPUT OR ERROR if (asyncResult.status === "failed") { writeToPage("Error get_rangecoords. " + asyncResult.error.message, 3); } else { writeToPage("Added new binding with type: " + asyncResult.value.type + " and id: " + asyncResult.value.id, 1); } }); Office.select("bindings#MyMatrixBinding", onBindingNotFound). addHandlerAsync(Office.EventType.BindingSelectionChanged, onBindingSelectionChanged, function (AsyncResult) { writeToPage("Event handler was added successfully! Change the matrix current selection to trigger the event", 1); }); //Trigger on selection change, get partial data from the matrix function onBindingSelectionChanged(eventArgs) { eventArgs.binding.getDataAsync({ CoercionType: "matrix", startRow: eventArgs.startRow, startColumn: eventArgs.startColumn, rowCount: 1, columnCount: 1 }, function (asyncResult) { //NOW DO OUTPUT OR ERROR if (asyncResult.status === "failed") { writeToPage("Error asyncResult: " + asyncResult.error.message, 3); } else { writeToPage('Start Row:' + eventArgs.startRow + ' Start Col:' + eventArgs.startColumn + '\nSelected Row count:' + eventArgs.rowCount + ', Col Count:' + eventArgs.columnCount + '\nFirst Cell Value:' + asyncResult.value[0].toString(), 1); } }); } //Show error message in case the binding object wasn"t found function onBindingNotFound() { writeToPage("The binding object was not found. Please return to previous step to create the binding", 3); } } function writeToPage(text, varimportance) { if (varimportance == "") { document.getElementById('Notificationarea').style.color = "black"; } if (varimportance == 1) { document.getElementById('Notificationarea').style.color = "darkgreen"; } if (varimportance == 2) { document.getElementById('Notificationarea').style.color = "darkorange"; } if (varimportance == 3) { document.getElementById('Notificationarea').style.color = "red"; } document.getElementById('Notificationarea').innerText = text; } 

有关更多信息,请参阅http://microsoft-office-add-ins.com

诀窍是首先创build一个命名的项目,然后附加一个SelectionChanged处理程序。 在其参数中,您将获得该命名项目内select的列,行,高度和宽度。 这里有一个微软开发团队的例子:

https://code.msdn.microsoft.com/office/Apps-for-Office-Get-51cc1aac