C#中操作Excel(4)—— 向Excel中插入两种图表以及设置图表格式

一、引言


        本文主要讨论下向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 git@github.com:HymanLiuTS/OfficeTestByC-.git
获取本文源代码:
git checkout L13

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值