之前介绍过如何设置现有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")
效果图如下: