之前介绍过,今天本文将着重介绍如何使用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")
效果图如下: