图表系列类的 setSolidColor 方法在 Excel 1907 Build 11901.20080 中引发错误,但在 Excel 1902 Build 11328.20116 中没有。
为了演示错误,我修改了 Script Lab 中的示例,特别是“图表”下的部分,称为“创建图表 - 创建集群的列,线,...”。
数据设置是必需的,这里是来自 Scirptlab 的代码。这不演示错误只是设置数据。
async function setup() {
await Excel.run(async (context) => {
context.workbook.worksheets.getItemOrNullObject("Sample").delete();
const sheet = context.workbook.worksheets.add("Sample");
let expensesTable = sheet.tables.add("A1:E1", true);
expensesTable.name = "SalesTable";
expensesTable.getHeaderRowRange().values = [["Product", "Qtr1", "Qtr2", "Qtr3", "Qtr4"]];
expensesTable.rows.add(null, [
["Frames", 5000, 7000, 6544, 4377],
["Saddles", 400, 323, 276, 651],
["Brake levers", 12000, 8766, 8456, 9812],
["Chains", 1550, 1088, 692, 853],
["Mirrors", 225, 600, 923, 544],
["Spokes", 6005, 7634, 4589, 8765]
]);
sheet.getUsedRange().format.autofitColumns();
sheet.getUsedRange().format.autofitRows();
sheet.activate();
await context.sync();
});
}
演示错误的代码如下。注意唯一添加的是折线图.series.getItemAt(0).format.fill.setSolidColor("CCCCCC");
这会引发错误“当前对象不允许此操作。”
async function createAreaStackedChart() {
await Excel.run(async (context) => {
const sheet = context.workbook.worksheets.getItem("Sample");
const salesTable = sheet.tables.getItem("SalesTable");
const dataRange = salesTable.getDataBodyRange();
let chart = sheet.charts.add("AreaStacked", dataRange, "Auto");
chart.setPosition("H1", "M15");
chart.title.text = "Quarterly sales chart";
chart.legend.position = "Bottom";
chart.legend.format.fill.setSolidColor("white");
chart.dataLabels.format.font.size = 15;
chart.dataLabels.format.font.color = "black";
chart.series.getItemAt(0).name = "Q1";
chart.series.getItemAt(1).name = "Q2";
chart.series.getItemAt(2).name = "Q3";
chart.series.getItemAt(3).name = "Q4";
chart.series.getItemAt(0).format.fill.setSolidColor("CCCCCC"); //only addition
await context.sync();
});
}
我只在 Excel 1907 Build 11901.20080 中看到了错误,但在 Excel 1902 Build 11328.20116 中没有出现。