一、引言

本文主要讨论下向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

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

  1. vue中基于echarts和基于高德地图的两种地图下钻与上浮方式

    ** vue中基于echarts和基于高德地图的两种地图下钻与上浮方式 ** 基于echarts的地图下钻与上浮(浙江省为例) 第一步:在<template>中构建承载echarts的do ...

  2. xlsx怎么设置行高列宽_Excel2016中调整行高和列宽的两种方法

    在报表的编辑过程中经常需要调整特定行的行高或列的列宽,例如当单元格中输入的数据超出该单元格宽度时,需要调整单元格的列宽.本文图文讲述了Excel2016中调整行高和列宽的两种方法. 方法一:使用命令调 ...

  3. 面试中的最常被问到的两种锁

    文章目录 面试中的最常被问到的两种锁 **锁的分类** **乐观锁** **悲观锁** 面试中的最常被问到的两种锁 公众号后台领取更多 面试必看资料 面试中经常被问到的锁到底是哪两种锁呢?接下来我们就 ...

  4. 19、angular1之pass-word组件、input-select组件 、only-select组件(两种)、on-off组件、layui中的datetime示例、京东购物车、两种作用域绑定、

    19.angular1之pass-word组件.input-select组件 .only-select组件(两种).on-off组件.layui中的datetime示例.京东购物车.两种作用域绑定.两 ...

  5. 在面向数据流的设计方法中,一般把数据流图中的数据流划分为 (16) 两种。 答案:C

    在面向数据流的设计方法中,一般把数据流图中的数据流划分为 (16) 两种. (16)A.数据流和事务流 B.变换流和数据流 C.变换流和事务流 D.控制流和事务流 数据流的类型决定映射的方法.数据流有 ...

  6. JUC里面的相关分类|| java并发编程中,关于锁的实现方式有两种synchronized ,Lock || Lock——ReentrantLock||AQS(抽象队列同步器)

    JUC分类 java并发编程中,关于锁的实现方式有两种synchronized ,Lock AQS--AbstractQueuedSynchronizer

  7. 多个html如何套用套一个头部,Vue.js项目中管理每个页面的头部标签的两种方法...

    在 Vue SPA 应用中,如果想要修改 HTML 的头部标签,如页面的 title ,我们只能去修改 index.html 模板文件,但是这个是全局的修改,如何为每个页面都设置不一样的 title ...

  8. java整型转换为数组_基于java中byte数组与int类型的转换(两种方法)

    java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形 ...

  9. 会员营销中,转化新用户为会员的两种手段

    就目前的用户运营而言,企业的首要任务就是选择合适的运营方式,为什么这么说呢?这是因为用户运营并不是一句话的问题,它需要企业去实打实的采用手段进行运营,不然是无法调动用户达成想要的效果的,所以企业面对用 ...

  10. js中判断文本框是否为空的两种方法

    js中判断文本框是否为空的两种方法 //用户名非空验证 function checkUserName(){ var name = document.myform.txtUser; //在这里我认为: ...

最新文章

  1. 6.Python标准库_子进程 (subprocess包)
  2. ax.spines——matplotlib坐标轴设置
  3. 讲好话、好讲话和讲话好
  4. 十一游玩新发现(见怪不怪)
  5. WOFF字体的Mime类型?
  6. HTML — 快速开发总结篇
  7. springboot批量更新实体_springboot使用druid批量更新报错
  8. Windows系统下的socket编程
  9. cecore.cls.php 08cms,08CMS产品库报价系统 v1.1 BIG5版PHP CMS源码下载-华软网
  10. 使用vlmcsd搭建KMS服务器激活环境
  11. java时间转换之天数计算
  12. tomcat中的过滤器
  13. 软件测试工作的目的和原则是什么?
  14. 共享单车泡沫破灭,自行车产业链的每个环节都被波及
  15. 哔哩哔哩 BV、AV互转 C#版
  16. ue4 开发动作游戏_ue4游戏开发虚幻4学习教程资源素材合集
  17. 总结-控制台(Console)程序和Windows程序的区别
  18. Proteus 8 Professional跑Keil uVision4的文件
  19. STM32应用IAP进行程序更新详解及实例
  20. 一个非常轻巧的基于Groovy的Web应用程序项目模板

热门文章

  1. 为什么你招不到合适的猎头顾问?浅谈猎企内部招聘
  2. python编程心得体会800字_学习python的心得体会
  3. 软件测试这个工作入门难不难?
  4. 如何查看hadoop集群的四个配置文件(core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml )
  5. java中wgs84转高德_2020-06-11关于WGS84 高德坐标 百度坐标的相互转换
  6. Linux修改只读文件(Read-Only)的方法
  7. 快速上手Android蓝牙串口开发
  8. 中国黑客生存特写,互联网金钱帝国里的英雄和盗匪
  9. 电脑版微信多开小技巧
  10. 作物病虫害识别数据集资源合集