将数据标签添加到 Excel 图表,以提供有关图表重要方面的更好可视化体验。 若要了解有关数据标签的详细信息,请参阅 在图表中添加或删除数据标签。
以下代码示例设置本文中使用的示例数据和 自行车部件生产 图表。
async function setup() {
await Excel.run(async (context) => {
context.workbook.worksheets.getItemOrNullObject("Sample").delete();
const sheet = context.workbook.worksheets.add("Sample");
let salesTable = sheet.tables.add("A1:E1", true);
salesTable.name = "SalesTable";
salesTable.getHeaderRowRange().values = [["Product", "Qtr1", "Qtr2", "Qtr3", "Qtr4"]];
salesTable.rows.add(null, [
["Frames", 5000, 7000, 6544, 5377],
["Saddles", 400, 323, 276, 1451],
["Brake levers", 9000, 8766, 8456, 9812],
["Chains", 1550, 1088, 692, 2553],
["Mirrors", 225, 600, 923, 344],
["Spokes", 6005, 7634, 4589, 8765]
]);
sheet.activate();
createChart(context);
});
}
async function createChart(context: Excel.RequestContext) {
const worksheet = context.workbook.worksheets.getActiveWorksheet();
const chart = worksheet.charts.add(
Excel.ChartType.lineMarkers,
worksheet.getRange("A1:E7"),
Excel.ChartSeriesBy.rows
);
chart.axes.categoryAxis.setCategoryNames(worksheet.getRange("B1:E1"));
chart.name = "PartChart";
// Place the chart below sample data.
chart.top = 125;
chart.left = 5;
chart.height = 300;
chart.width = 450;
chart.title.text = "Bicycle Part Production";
chart.legend.position = "Bottom";
await context.sync();
}
此图显示运行示例代码后图表的显示方式。
添加数据标签
若要向图表添加数据标签,请获取要更改的数据点系列,并将 属性设置为 hasDataLabelstrue。
async function addDataLabels() {
await Excel.run(async (context) => {
const worksheet = context.workbook.worksheets.getActiveWorksheet();
const chart = worksheet.charts.getItem("PartChart");
await context.sync();
// Get spokes data series.
const series = chart.series.getItemAt(5);
// Turn on data labels and set location.
series.hasDataLabels = true;
series.dataLabels.position = Excel.ChartDataLabelPosition.top;
await context.sync();
});
}
设置数据标签大小、形状和文本的格式
可以使用以下 API 更改数据标签的属性。
- 通过设置 geometricShapeType 属性更改数据标签形状。
- 使用 setWidth 和 setHeight 方法更改高度和宽度。
- 使用 text 属性更改 文本 。
- 使用 format 属性更改文本格式。 可以更改 边框、填充和字体 属性。
下面的代码示例演示如何设置数据标签的形状类型、高度和宽度以及字体格式。
await Excel.run(async (context) => {
const worksheet = context.workbook.worksheets.getActiveWorksheet();
const chart = worksheet.charts.getItem("PartChart");
const series = chart.series.getItemAt(5);
// Set geometric shape of data labels to cubes.
series.dataLabels.geometricShapeType = Excel.GeometricShapeType.cube;
series.points.load("count");
await context.sync();
let pointsLoaded = series.points.count;
// Change height, width, and font size of all data labels.
for (let j = 0; j < pointsLoaded; j++) {
series.points.getItemAt(j).dataLabel.setWidth(60);
series.points.getItemAt(j).dataLabel.setHeight(30);
series.points.getItemAt(j).dataLabel.format.font.size = 12;
}
// Set text of a data label.
series.points.getItemAt(2).dataLabel.setWidth(80);
series.points.getItemAt(2).dataLabel.setHeight(50);
series.points.getItemAt(2).dataLabel.text = "Spokes Qtr3: 4589 ↓";
await context.sync();
});
在以下屏幕截图中,图表现在包括辐射数据的计数数据标签,并在第三个数据点使用自定义文本。
还可以更改数据标签中文本的格式。 下面的代码示例演示如何使用 getSubstring 方法获取部分数据标签文本并应用字体格式。
await Excel.run(async (context) => {
const worksheet = context.workbook.worksheets.getActiveWorksheet();
const chart = worksheet.charts.getItem("PartChart");
const series = chart.series.getItemAt(5);
// Get the "Spokes" data label.
let label = series.points.getItemAt(2).dataLabel;
label.load();
await context.sync();
// Change border weight of this label.
label.format.border.weight = 2;
// Format "Qtr3" as bold and italicized.
label.getSubstring(7, 4).font.bold = true;
label.getSubstring(7, 4).font.italic = true;
// Format "Spokes" as green.
label.getSubstring(0, 6).font.color = "green";
// Format "4589" as red.
label.getSubstring(12).font.color = "red";
// Move label up by 15 points.
label.top = label.top - 15;
await context.sync();
});
设置引线格式
引线将数据标签连接到其各自的数据点,以便更轻松地查看它们在图表中引用的内容。 使用 showLeaderLines 属性打开前导线。 可以使用 leaderLines.format 属性设置引线的格式。
await Excel.run(async (context) => {
const worksheet = context.workbook.worksheets.getActiveWorksheet();
const chart = worksheet.charts.getItem("PartChart");
const series = chart.series.getItemAt(5);
// Show leader lines.
series.showLeaderLines = true;
await context.sync();
// Format leader lines as dotted orange lines with weight 2.
series.dataLabels.leaderLines.format.line.lineStyle = Excel.ChartLineStyle.dot;
series.dataLabels.leaderLines.format.line.color = "orange";
series.dataLabels.leaderLines.format.line.weight = 2;
});
创建标注
标注是使用气泡形指针连接到数据点的数据标签。 标注具有一个定位点,该定位点可从数据点移动到图表上的其他位置。
以下代码示例演示如何更改系列中的数据标签以使用 Excel.GeometricShapeType.wedgeRectCallout。 请注意,先导线处于关闭状态,以避免向同一数据标签显示两个指示器。
await Excel.run(async (context) => {
const worksheet = context.workbook.worksheets.getActiveWorksheet();
const chart = worksheet.charts.getItem("PartChart");
const series = chart.series.getItemAt(5);
// Change to a wedge rectangle style callout.
series.dataLabels.geometricShapeType = Excel.GeometricShapeType.wedgeRectCallout;
series.showLeaderLines = false;
await context.sync();
});
以下代码示例演示如何更改数据标签的定位点位置。
await Excel.run(async (context) => {
const worksheet = context.workbook.worksheets.getActiveWorksheet();
const chart = worksheet.charts.getItem("PartChart");
const series = chart.series.getItemAt(5);
let label = series.points.getItemAt(2).dataLabel;
let point = series.points.getItemAt(2);
label.load();
await context.sync();
let anchor = label.getTailAnchor();
anchor.load();
await context.sync();
anchor.top = anchor.top - 10;
anchor.left = 40;
});
此屏幕截图演示了前面的代码示例如何调整第三个数据标签的定位点。