之前介绍过如何设置现有Excel图表的数据标签样式,今天本文将着重介绍如何使用Spire.XLS来自定义数据标签以及更改现有Excel文档中数据标签的一些其他设置,比如内容,位置等。
使用工作表里面其他单元格的数据自定义数据标签
代码如下:
C#
//实例化一个Workbook对象并声明版本
Workbook wb = new Workbook();
wb.Version = ExcelVersion.Version2010;
//获取第一个工作簿
Worksheet ws = wb.Worksheets[0];
//在工作薄中加入数据
ws.Range["A1"].Style.Font.IsBold = true;
ws.Range["B1"].Style.Font.IsBold = true;
ws.Range["C1"].Style.Font.IsBold = true;
ws.Range["A1"].Text = "月份";
ws.Range["A2"].Text = "一月";
ws.Range["A3"].Text = "二月";
ws.Range["A4"].Text = "三月";
ws.Range["A5"].Text = "四月";
ws.Range["B1"].Text = "支出";
ws.Range["B2"].NumberValue = 251;
ws.Range["B3"].NumberValue = 515;
ws.Range["B4"].NumberValue = 454;
ws.Range["B5"].NumberValue = 874;
ws.Range["C1"].Text = "自定义DataLabel";
ws.Range["C2"].Text = "自定义DataLabel1";
ws.Range["C3"].Text = "自定义DataLabel2";
ws.Range["C4"].Text = "自定义DataLabel3";
ws.Range["C5"].Text = "自定义DataLabel4";
//设置表格列宽
ws.SetColumnWidth(3, 20);
Chart chart = ws.Charts.Add(ExcelChartType.ColumnClustered);
chart.DataRange = ws.Range["A1:B5"];
//指定系列
chart.SeriesDataFromRange = false;
chart.PrimaryValueAxis.HasMajorGridLines = false;
//设置图表的位置
chart.LeftColumn = 4;
chart.TopRow = 2;
chart.RightColumn = 11;
chart.BottomRow = 19;
//使用文档中其他单元格的数据自定义datalabel
chart.Series[0].DataPoints.DefaultDataPoint.DataLabels.ValueFromCell = ws.Range["C2:C5"];
//为数据标签设置楔形标注
chart.Series[0].DataPoints.DefaultDataPoint.DataLabels.HasWedgeCallout = true;
//保存文档到本地并打开
wb.SaveToFile("自定义数据标签.xlsx", ExcelVersion.Version2010);
System.Diagnostics.Process.Start("自定义数据标签.xlsx");
VB.NET
'实例化一个Workbook对象并声明版本 Dim wb As New Workbook() wb.Version = ExcelVersion.Version2010 '获取第一个工作簿
Dim ws As Worksheet = wb.Worksheets(0)
'在工作薄中加入数据 ws.Range("A1").Style.Font.IsBold = True ws.Range("B1").Style.Font.IsBold = True ws.Range("C1").Style.Font.IsBold = True ws.Range("A1").Text = "月份" ws.Range("A2").Text = "一月" ws.Range("A3").Text = "二月" ws.Range("A4").Text = "三月" ws.Range("A5").Text = "四月" ws.Range("B1").Text = "支出" ws.Range("B2").NumberValue = 251 ws.Range("B3").NumberValue = 515 ws.Range("B4").NumberValue = 454 ws.Range("B5").NumberValue = 874 ws.Range("C1").Text = "自定义DataLabel" ws.Range("C2").Text = "自定义DataLabel1" ws.Range("C3").Text = "自定义DataLabel2" ws.Range("C4").Text = "自定义DataLabel3" ws.Range("C5").Text = "自定义DataLabel4" '设置表格列宽
ws.SetColumnWidth(3, 20)
Dim chart As Chart = ws.Charts.Add(ExcelChartType.ColumnClustered)
chart.DataRange = ws.Range("A1:B5")
'指定系列 chart.SeriesDataFromRange = False chart.PrimaryValueAxis.HasMajorGridLines = False '设置图表的位置
chart.LeftColumn = 4
chart.TopRow = 2
chart.RightColumn = 11
chart.BottomRow = 19
'使用文档中其他单元格的数据自定义datalabel chart.Series(0).DataPoints.DefaultDataPoint.DataLabels.ValueFromCell = ws.Range("C2:C5") '为数据标签设置楔形标注
chart.Series(0).DataPoints.DefaultDataPoint.DataLabels.HasWedgeCallout = True
'保存文档到本地并打开 wb.SaveToFile("自定义数据标签.xlsx",ExcelVersion.Version2010) System.Diagnostics.Process.Start("自定义数据标签.xlsx")
效果图如下:
更改现有文档中数据标签的设置
代码如下:
C#
//加载刚刚得到的文档 Workbook workbook = new Workbook();workbook.LoadFromFile("自定义数据标签.xlsx");//获取第一个工作表以及表里面的第一个图表 Worksheet sheet = workbook.Worksheets[0];Chart chart = sheet.Charts[0];//获取该图表的第一个系列 ChartSerie chartSeries = chart.Series[0];//获取该系列的第一个DataPoint的数据标签 ChartDataLabels cslabel = chartSeries.DataPoints[0].DataLabels;//修改数据标签内容并把设置内容文字的字体和颜色 cslabel.Text = "已更改";cslabel.FontName = "楷体";cslabel.Color = Color.Red;//设置显示图例项标示 cslabel.HasLegendKey = true;//设置数据标签的位置居中 //cslabel.Position = DataLabelPositionType.Center;//自定义数据标签的位置,默认的原点在图表左上角 cslabel.IsYMode = true;cslabel.IsXMode = true;cslabel.Y =1200;cslabel.X = 600;//设置显示引导线(任意设置一个DataPoint会对整个系列生效, //但是只有自定义数据标签位置之后才会显示效果) cslabel.ShowLeaderLines = true;//取消楔形标注(任意设置一个DataPoint会对整个系列生效) cslabel.HasWedgeCallout = false;//保存到本地并打开 workbook.SaveToFile("更改数据标签设置.xlsx");System.Diagnostics.Process.Start("更改数据标签设置.xlsx");
VB.NET
'加载刚刚得到的文档
Dim workbook As New Workbook()
workbook.LoadFromFile("自定义数据标签.xlsx")
'获取第一个工作表以及表里面的第一个图表 Dim sheet As Worksheet = workbook.Worksheets(0) Dim chart As Chart = sheet.Charts(0) '获取该图表的第一个系列
Dim chartSeries As ChartSerie = chart.Series(0)
'获取该系列的第一个DataPoint的数据标签 Dim cslabel As ChartDataLabels = chartSeries.DataPoints(0).DataLabels '修改数据标签内容并把设置内容文字的字体和颜色
cslabel.Text = "已更改"
cslabel.FontName = "楷体"
cslabel.Color = Color.Red
'设置显示图例项标示 cslabel.HasLegendKey = True '设置数据标签的位置居中
'cslabel.Position = DataLabelPositionType.Center;'自定义数据标签的位置,默认的原点在图表左上角
cslabel.IsYMode = True
cslabel.IsXMode = True
cslabel.Y = 1200
cslabel.X = 600
'设置显示引导线(任意设置一个DataPoint会对整个系列生效, '但是只有自定义数据标签位置之后才会显示效果)
cslabel.ShowLeaderLines = True
'取消楔形标注(任意设置一个DataPoint会对整个系列生效) cslabel.HasWedgeCallout = False '保存到本地并打开
workbook.SaveToFile("更改数据标签设置.xlsx")
System.Diagnostics.Process.Start("更改数据标签设置.xlsx")
效果图如下: