一、引言
本文主要讨论下向Excel中插入图表的两种方式。在Excel中图表是有两种级别的,一种是和sheet同级别的图表,也就是说整个excel的标签页就是一个图表;还有一种就是我们最常使用的在一个sheet中插入的图表,我们姑且叫它sheet子图表。这种图标在原则上可以插入N个。本文就这两种图表,分别介绍其插入的方法。
二、插入sheet级别的图表
这种级别的图标插入方法和插入一个sheet类似,我们需要依靠Workbook的Charts属性,增加一个新的图标使用其Add()方法:
Workbook book = app.Workbooks.Add("D:\\Test.xlsx");
Worksheet sheet = book.Worksheets[1];
Chart chart = book.Charts.Add();
获取到这个图表之后,我们可以利用Chart的SetSourceData()方法设置图表的数据源,其接受一个Range对象作为参数,这个Range就是我们需要生产图标的表格数据的范围。
Range range = sheet.get_Range("B2","C4");
chart.SetSourceData(range);
在这里range数据的填充代码就不再展示,最终达到的效果如下,我们成功在excel的首页插入一个名叫chart1的图表:
三、插入sheet子图表
和Word中插入图表的方法类似,我们可以利用sheet的Shapes属性插入一个图表,上文中也利用了该属性插入了一张图片。
Microsoft.Office.Interop.Excel.Shape shape = sheet.Shapes.AddChart();
Chart chart = shape.Chart;
AddChart()返回的是一个Shape类型的对象,而Shape有一个属性Chart就是我们的chart图表,接下来设置表格的数据源:
chart.SetSourceData(range);//按照列绘制
最终生成如下的图表:
四、设置图表的格式
4.1 设置图表的数据源基准
图表的数据源基准是指生成图表时,是以行为数据源(列为该数据源数据)还是以列为数据源(行为该数据源数据),一般使用SetSourceData在设置图表的数据源时指定该基准, SetSourceData的函数原型如下:
void SetSourceData(
Range Source,
Object PlotBy
)
Source
类型: Microsoft.Office.Interop.Excel.Range
Range. 包含源数据的范围。
PlotBy
类型: System.Object
指定绘制数据的方式。可以为以下XlRowCol常数之一: Excel.XlRowCol.xlColumns 或 Excel.XlRowCol.xlRows。
4.2 设置图表的Style
我们知道,图表的类型有很多种,包括曲线、柱形图等等。通过Chart的ChartType的属性可以设置图表的显示风格,如下面的代码设置图表的风格为曲线:
chart.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlLine;
4.3 设置图表的横纵坐标名称
Microsoft.Office.Interop.Excel.Axis xAxis = chart.Axes(Microsoft.Office.Interop.Excel.XlAxisType.xlCategory, Microsoft.Office.Interop.Excel.XlAxisGroup.xlPrimary);
Microsoft.Office.Interop.Excel.Axis yAxis = chart.Axes(Microsoft.Office.Interop.Excel.XlAxisType.xlValue, Microsoft.Office.Interop.Excel.XlAxisGroup.xlPrimary);
Microsoft.Office.Interop.Excel.Axis zAxis = null;
xAxis.HasTitle = true;
xAxis.AxisTitle.Text = "X轴标题";
yAxis.HasTitle = true;
yAxis.AxisTitle.Text = "Y轴标题";
4.4 设置图表的Title
chart.HasTitle = true;
chart.ChartTitle.Text = "图表主Title";
Github位置:
https://github.com/HymanLiuTS/OfficeTestByC-
克隆本项目:
Git clone [email protected]:HymanLiuTS/OfficeTestByC-.git
获取本文源代码:
git checkout L13