图表中, 图表数据标签以数据化形式表现图表中的特定数据, 可增强图表的可读性. 我们可以对图表添加数据标签, 也可以对已有的数据标签进行修改或者删除, 下面将通过 C# 代码形式来实现.
使用工具: Spire.XLS for .NET pack
dll 文件获取及引用:
方法 1: 通过官网下载包. 下载后, 解压文件, 安装 Bin 文件夹下的程序. 安装后, 将安装路径下 Bin 文件夹下的 Spire.Xls.dll 文件添加引用至 vs 项目程序. 如下所示:
方法 2: 可通过 Nuget 下载.
C# 示例
[添加数据标签]
- using Spire.Xls;
- using Spire.Xls.Charts;
- using System.Drawing;
- namespace AddDataLables
- {
- class Program
- {
- static void Main(string[] args)
- {
- // 加载测试文档
- Workbook workbook = new Workbook();
- workbook.LoadFromFile("test.xlsx");
- // 获取第一个工作薄以及其中的第一个图表
- Worksheet sheet = workbook.Worksheets[0];
- Chart chart = sheet.Charts[0];
- // 获取图表中的指定系列
- ChartSerie serie1 = chart.Series[1];
- // 添加数据标签, 并设置数据标签样式
- serie1.DataPoints.DefaultDataPoint.DataLabels.HasValue = true;
- serie1.DataPoints.DefaultDataPoint.DataLabels.FrameFormat.Fill.FillType = ShapeFillType.SolidColor;
- serie1.DataPoints.DefaultDataPoint.DataLabels.FrameFormat.Fill.ForeColor = Color.White;
- serie1.DataPoints.DefaultDataPoint.DataLabels.FrameFormat.Border.Pattern = ChartLinePatternType.Solid;
- serie1.DataPoints.DefaultDataPoint.DataLabels.FrameFormat.Border.Color = Color.Green;
- //// 使用文档中其他单元格的数据自定义 datalabel
- //ChartSerie serie2 = chart.Series[2];
- //serie2.DataPoints.DefaultDataPoint.DataLabels.ValueFromCell = sheet.Range["B4:E4"];
- //// 添加数据标注
- //serie2.DataPoints.DefaultDataPoint.DataLabels.HasWedgeCallout = true;
- // 保存文档
- workbook.SaveToFile("AddDataLable.xlsx");
- System.Diagnostics.Process.Start("AddDataLable.xlsx");
- }
- }
- }
数据标签效果:
数据标注效果:
[编辑 / 修改数据标签]
这里以上面代码中添加的数据标注为例, 进行修改等操作.
- using Spire.Xls;
- using Spire.Xls.Charts;
- using System.Drawing;
- namespace ModifyDataLable
- {
- class Program
- {
- static void Main(string[] args)
- {
- // 加载文档
- Workbook workbook = new Workbook();
- workbook.LoadFromFile("AddDataLable.xlsx");
- // 获取第一个工作表以及表里面的第一个图表
- Worksheet sheet = workbook.Worksheets[0];
- Chart chart = sheet.Charts[0];
- // 获取图表系列及数据标签
- ChartSerie chartSeries = chart.Series[2];
- ChartDataLabels cslabel = chartSeries.DataPoints[1].DataLabels;
- cslabel.HasLegendKey = true;// 设置显示图例项标示
- cslabel.Position = DataLabelPositionType.Center;// 设置数据标签的位置居中
- // 自定义数据标签的位置, 默认的原点在图表左上角;
- cslabel.IsYMode = true;
- cslabel.IsXMode = true;
- cslabel.X = 1100;
- cslabel.Y = 400;
- // 设置显示引导线 (任意设置一个 DataPoint 会对整个系列生效, 但是只有自定义数据标签位置之后才会显示效果)
- cslabel.ShowLeaderLines = true;
- // 取消楔形标注 (任意设置一个 DataPoint 会对整个系列生效)
- cslabel.HasWedgeCallout = false;
- // 保存
- workbook.SaveToFile("ModifyDatalable.xlsx");
- System.Diagnostics.Process.Start("ModifyDatalable.xlsx");
- }
- }
- }
数据标签修改效果:
[删除数据标签]
- using Spire.Xls;
- using Spire.Xls.Charts;
- namespace DeleteDataLable
- {
- class Program
- {
- static void Main(string[] args)
- {
- // 加载文档
- Workbook workbook = new Workbook();
- workbook.LoadFromFile("AddDataLable.xlsx");
- // 获取第一个工作表以及表里面的第一个图表
- Worksheet sheet = workbook.Worksheets[0];
- Chart chart = sheet.Charts[0];
- // 删除所有系列的数据标签
- for (int i = 0; i < chart.Series.Count; i++)
- {
- ChartSerie chartSeries = chart.Series[i];
- chartSeries.DataPoints.Clear();
- }
- // 删除指定数据系列的数据标签
- //ChartSerie chartSeries = chart.Series[2];
- //chartSeries.DataPoints.Clear();
- // 删除指定系列中数据标签的指定值
- //ChartSerie chartSeries = chart.Series[2];
- //ChartDataLabels cslabel = chartSeries.DataPoints[0].DataLabels;
- //cslabel.Text = " ";
- //cslabel.HasLegendKey = false;
- // 保存文档
- workbook.SaveToFile("RemoveDataLable.xlsx");
- System.Diagnostics.Process.Start("RemoveDataLable.xlsx");
- }
- }
- }
运行程序后可查看数据标签删除效果.
(本文完)
来源: https://www.cnblogs.com/Yesi/p/11757402.html