2017-05-16 12 views
0

如何使用Excel Javascript API获得两个工作表的位置?Excel Javascript获取多个工作表的位置

下面是它的工作原理只是一张纸:

Excel.run(function (ctx) { 
    var wSheetName = 'Sheet1'; 
    var worksheet = ctx.workbook.worksheets.getItem(wSheetName); 
    worksheet.load('position') 
    return ctx.sync().then(function() { 
     console.log(worksheet.position); 
    }); 
}); 

=>它记录0到控制台

但是,如果我尝试获取位置两个工作表不记录任何东西:

Excel.run(function (ctx) { 
    var wSheetName = 'Sheet1'; 
    var wSheetName2 = 'Evars'; 
    var worksheet = ctx.workbook.worksheets.getItem(wSheetName); 
    var worksheet2 = ctx.workbook.worksheets.getItem(wSheetName2); 
    worksheet.load('position') 
    worksheet2.load('position') 
    return ctx.sync().then(function() { 
     console.log(worksheet.position); 
     console.log(worksheet2.position); 
    }); 
}); 

回答

0

我只是试过你的代码,它工作正常。我想知道你是否没有通过这些名字中的一个名单,因此它抛出了一个异常 - 由于你没有捕获处理程序,所以你觉得这个异常是沉默的。

下面的代码,本质上是一样的你,但使用catch语句,正常工作:

Excel.run(function(ctx) { 
    var wSheetName = 'Sheet1'; 
    var wSheetName2 = 'Sheet2'; 
    var worksheet = ctx.workbook.worksheets.getItem(wSheetName); 
    var worksheet2 = ctx.workbook.worksheets.getItem(wSheetName2); 
    worksheet.load('name, position') 
    worksheet2.load('name, position') 
    return ctx.sync().then(function() { 
     console.log(worksheet.name + ": " + worksheet.position); 
     console.log(worksheet2.name + ": " + worksheet2.position); 
    }); 
}).catch(function(error) { 
    OfficeHelpers.UI.notify(error); 
    OfficeHelpers.Utilities.log(error); 
}) 

您可以尝试在新的脚本实验室字面上5次点击(https://aka.ms/getscriptlab)这个片段直播。只需安装Script Lab加载项(免费),然后在导航菜单中选择“导入”,然后使用以下GIST URL:https://gist.github.com/Zlatkovsky/c61594f1c86970e8dba91fe94b7ca4b6。见more info about importing snippets to Script Lab

0

找到了解决办法here ...也许这将帮助别人

Excel.run(function (ctx) { 
    var worksheets = ctx.workbook.worksheets; 
    worksheets.load('items'); 
    return ctx.sync().then(function() { 
     for (var i = 0; i < worksheets.items.length; i++) { 
      var sheet_name = worksheets.items[i].name; 
      var sheet_position = worksheets.items[i].position; 
     } 
    });