所以我正在通过Office App中这个欠发达的JavaScript API工作,我正在试图找出如何获取父对象。具体来说,如何从范围中获取工作表,或从表中获取工作表,但也可以是图表中的工作表,工作表中的工作表等。我还没有找到执行此操作的任何示例代码。感谢任何帮助!
答案 0 :(得分:3)
要添加Gabriel Royer的答案,这里有一些代码示例:
escape("let's go");
当然上面的例子有点傻,因为你可以做到
Excel.run(function (ctx) {
var range = ctx.workbook.getSelectedRange();
var worksheet = range.worksheet;
worksheet.load("name");
return ctx.sync().then(function () {
app.showNotification("Sheet name", worksheet.name);
});
}).catch(function(e) {
app.showNotification("Error", e);
});
但是如果你改为使用命名范围,那么样本会变得更加真实:
var worksheet = ctx.workbook.worksheets.getActiveWorksheet();
对于表格,您可以通过以下方式找出它所处的表格:
Excel.run(function(ctx) {
var range = ctx.workbook.names.getItem("MyNamedRange").getRange();
var worksheet = range.getRange();
worksheet.load("name");
return ctx.sync().then(function() {
app.showNotification("Sheet name", worksheet.name);
});
}).catch(function(e) {
app.showNotification("Error", e);
});
PS:注意:上面的代码使用Excel.run(function(ctx) {
var table = ctx.workbook.tables.getItem("Table1");
var worksheet = table.getRange().worksheet;
worksheet.load("name");
return ctx.sync().then(function() {
app.showNotification("Sheet name", worksheet.name);
});
}).catch(function(e) {
app.showNotification("Error", e);
});
方法,该方法是Office加载项的标准Visual Studio模板的一部分。如果您没有使用该模板,只需将此类调用替换为app.showNotification(title, text)
答案 1 :(得分:1)
虽然没有一个共同的机制来获取对象的父级,但在某些情况下有一种方法可以这样做:
Range
有一个worksheet
property(示例可在页面末尾找到)Table
允许您通过其getRange()
method获取其范围,然后您可以使用其worksheet
属性获取表格的父工作表。Worksheet
- API用于单个工作簿,因此上下文中的workbook
属性保证是工作表的父级。 Chart
没有任何指向其父级的指针,因此在这种情况下你无能为力。虽然您的反馈得到了适当的注意,但请随时在Office Extensibility Platform's UserVoice上请求此类API /机制。
Gabriel Royer - Office可扩展性团队开发人员,MSFT
答案 2 :(得分:-1)
## Loading the existing worksheet ##
----------
Excel.run(function(ctx) {
var sheet=ctx.workbook.names.getItem("SheetName").getRange("Specify your range");
sheet.load("name");
return ctx.sync().then(function() {
console.log("Sheet name", sheet.name); //getting the sheet name
sheet.activate();
});
}).catch(function(e) {
console.log("Error", e);
});