使用Office的JavaScript API获取Excel范围

使用Office的JavaScript API获取Excel范围,javascript,excel,office365,Javascript,Excel,Office365,我正在为Office(桌面Excel)构建一个应用程序,我正在寻找JavaScript API Office 1.1版中的一个函数,该函数将返回用户选择的列和行的地址。类似“A1:C3”的结果 我尝试使用Office.context.document.getSelectedDataAsync(),但它只获取值。我需要知道他们的地址,以便在我的应用程序中显示。我的代码如下: Office.context.document.getSelectedDataAsync(Office.CoercionTy

我正在为Office(桌面Excel)构建一个应用程序,我正在寻找JavaScript API Office 1.1版中的一个函数,该函数将返回用户选择的列和行的地址。类似“A1:C3”的结果

我尝试使用
Office.context.document.getSelectedDataAsync()
,但它只获取值。我需要知道他们的地址,以便在我的应用程序中显示。我的代码如下:

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

asyncResult
仅获取数组值。我在MSDN或谷歌上找不到任何有用的帮助。感谢您的帮助。

诀窍是首先在整个工作表中创建一个命名项目,然后在其上附加一个SelectionChanged处理程序。在其参数中,您将获得该命名项中所选内容的列、行、高度和宽度。 以下是Microsoft开发团队的一个示例:


下面是一个完整的工作示例函数:只需向该函数添加一个测试按钮。您还需要一个Div来使用writeToPage函数写入结果(或修改您自己的输出区域)


有关更多信息,请参见

这已经很晚了,但我希望此替代方案对使用Excel 2016的人员有用。您可以使用上的getSelectedRange函数获取当前选定的范围,然后加载address属性,如下所示

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
});

谢谢你的密码,斯图!到目前为止,我已经明白了这一点,但现在的挑战是选择工作表。我找不到一种方法来知道文件中有多少张纸,以及哪一张是.Hi Miro中的范围。我明白你的意思。你可以这样试试:假设你有两张床单。您可以在一张图纸中创建一个到相关范围的绑定,并在图纸2中创建一个不同的绑定。然后向每个绑定添加一个事件处理程序,然后就可以知道触发了哪个工作表。function addEvent(){Office.select(“bindings#myBindingXXX”).addHandlerAsync(“bindingDataChanged”,myHandler1,function(asyncResult){//NOW DO OUTPUT OR ERROR if(asyncResult.status==“failed”){writeToPage('Error E1a myHandler1 addEvent:'+asyncResult.Error.message,3);}其他{writeToPage('Event Handler1 added',1);}}}}函数myHandler1(eventArgs){//E1b eventArgs.binding.getDataAsync({强制类型:“matrix”},函数(asyncResult){//如果(asyncResult.status==“failed”),则立即执行输出或出错{writeToPage('ERROR E1b myHandler1:Event tracker'+asyncResult.ERROR.message,3);}否则{writeToPage('Event tracker,Bounded data:'+asyncResult.value,1);})}上面的第一个函数将把事件添加到myBindingXXX,如果绑定中有任何更改,第二个函数将输出结果。我看不出这个答案给出了实际问题的结果。@shyam:我对这个问题不熟悉,但它看起来像第47行显示.startRow和.startColumn是bArgs的属性
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
});