因此,我正在 Office 应用程序中通过这个非常不发达的 JavaScript API 工作,并且我试图弄清楚如何获得对象父级。具体来说,如何从范围中获取工作表,或从表格中获取工作表,但也可以是图表中的工作表,工作表中的工作簿等。我还没有找到任何示例代码可以做到这一点。感谢任何帮助!
问问题
691 次
3 回答
3
要添加到 Gabriel Royer 的答案,这里是一些代码示例:
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);
});
对于一张桌子,您可以通过以下方式找出它在哪张纸上:
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);
});
PS:注意:以上代码使用的app.showNotification(title, text)
方法是Office插件标准Visual Studio模板的一部分。如果您不使用模板,只需将任何此类调用替换为console.log(title + " " + text")
于 2015-11-19T17:33:58.770 回答
1
虽然没有通用的机制来获取对象的父对象,但在某些情况下有一种方法可以做到:
Range
有一个worksheet
属性(可以在页面末尾找到一个示例)Table
允许您通过它的getRange()
方法获取它的范围,然后您可以使用它的worksheet
属性来获取表的父工作表。Worksheet
- API 用于单个工作簿,因此workbook
上下文上的属性保证是工作表的父级。
Chart
另一方面,没有任何指向其父级的反向指针,因此在这种情况下您无能为力。虽然您的反馈已得到适当记录,但请随时在Office 可扩展性平台的 UserVoice上请求此类 API/机制。
Gabriel Royer - Microsoft Office 可扩展性团队的开发人员
于 2015-11-19T03:22:18.720 回答
-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);
});
于 2017-05-04T10:27:00.313 回答