我拼凑了一些JavaScript来标记图表中每个系列的最后一点(见下文)。这是VBA加载项中常用功能的简化版本。
我使用let mychart = mysheet.charts.getItemAt(0);
指定代码应该在工作表上的第一个图表对象上运行。在用户选择的图表上运行代码会更有用。
ActiveChart
)?同样,我使用for (var iseries = 0; iseries < nseries; iseries++)
来运行图表中所有系列的代码。在用户选择的特定系列上运行代码会更有用。
TypeName(Selection)
相关)?这是我的Office-JS代码:
$("#run").click(() => tryCatch(labelLastPoint));
//$("#label-last-point").click(labelLastPoint);
async function labelLastPoint() {
await Excel.run(async (context) => {
let mysheet = context.workbook.worksheets.getActiveWorksheet();
let mychart = mysheet.charts.getItemAt(0);
let seriescollection = mychart.series;
seriescollection.load("count");
await context.sync();
console.log("Number of Series: " + seriescollection.count);
let nseries = seriescollection.count;
for (var iseries = 0; iseries < nseries; iseries++) {
console.log("- Series Number " + iseries);
let myseries = seriescollection.getItemAt(iseries);
let pointcollection = myseries.points;
pointcollection.load("count");
await context.sync();
let npoints = myseries.points.count;
let mypoint = myseries.points.getItemAt(npoints - 1);
mypoint.hasDataLabel = true;
mypoint.dataLabel.showSeriesName = true;
mypoint.dataLabel.showValue = false;
}
});
}
答案 0 :(得分:1)
据我了解,您正在寻找可能被称为“getSelectedChart”和“getSelectedSeries”的API方法。我担心Office JS中没有API可以做到这一点。但这是个好主意。请在Office Developer User Voice建议。
Shared Office JS API中有一个getSelectedDataAsync方法,但它不支持图表或系列。
与此同时,在您的方案中是否可以在任务窗格中下拉,用户可以在其中按标题指定感兴趣的图表/系列?