关闭

C#中操作Word(9)—— 向Word中插入图表的三种方法(二)

标签: C#操作officeWORD操作word插入表格
3560人阅读 评论(4) 收藏 举报
分类:
        我们接着上一文的内容介绍在word中插入图标的方法。

方法二:从Excel中拷贝图表

        这种方法相信你通过这个标题就了解了。我们的思路就是在Excel中生成这个图表,然后在拷贝的word中。

2.1 引入Excel类库

        首先我们需要在项目中引入Excel相关的引用,如下图所示在“添加引用”对话框中选中选中Excel的对象库,然后点击确定。



        添加完成之后,我们还需要做的工作就是实用using关键字把Microsoft.Office.Interop.Excel命名空间其一个别名Excel:
using Excel = Microsoft.Office.Interop.Excel;

2.2 在Excel中生成图表

        接下来,我们启动Excel进程,然后在它的第一个sheet中添加一个2行4列的表格,并添加数据:

Excel.Application eApp = new Excel.Application();//创建Excel进程
eApp.Visible = true;//设置Excel可见
Excel.Workbook book=eApp.Workbooks.Add();//增加一个workboo
Excel.Worksheet sheet = eApp.Worksheets[1];//获取第一个Worksheet
Excel.Range range = sheet.get_Range("A1", "D2");//获取A1到D2范围内的Range
//向表格中插入数据
range.Cells[1][1] = "姓名";
range.Cells[1][2] = "成绩";
range.Cells[2][1] = "张三";
range.Cells[2][2] = "89";
range.Cells[3][1] = "李四";
range.Cells[3][2] = "100";
range.Cells[4][1] = "王五";
range.Cells[4][2] = "95";

       如果顺利的话,我们应该得到下面所示的Excel数据:

        然后,获取B1到D2的Range,并插入图表。
//插入图表À
Excel.Chart xlChart = book.Charts.Add();
//设置图表源
xlChart.SetSourceData(range);
最后,拷贝表格和图表到word中。
//拷贝表格
Word.Range wdRange = bk.Range;
range.Copy();
wdRange.Paste();
//拷贝图表数据到
wdRange.SetRange(wdRange.End, wdRange.End + 1);
xlChart.ChartArea.Copy();
wdRange.Paste();

        如果不出意外,我们成功插入了表格和图表:



        方法二基本都会适用于所有版本的office,接下来我们介绍的方法三只适用于office2010以上的版本。

方法三:利用InlineShapes的AddChart方法插入图表

        我们这里只是对方法三的一个简单介绍,因为笔者的office版本为2007版的,不想再重新安装2010版本以上的进行试验。从office2010之后InlineShape增加了一个Chart的属性,就是我们添加的图表,我们可以可以利用InlineShapes的AddChart()增加一个图表,该函数的返回值就是这个chart所在的InlineShape,然后通过InlineShape的Chart属性获取这个chart,这样我们就能够对chart进行设置数据或者格式的操作了,详细的方法见下面代码的注释。
Word.Selection sel = app.Selection;
Word.InlineShape shape = sel.InlineShapes.AddChart();//插入图表
Word.Chart wdChart = shape.Chart;//获取图表
Word.ChartData chartData = wdChart.ChartData;//获取图表的数据
Excel.Workbook dataWorkbook = (Excel.Workbook)chartData.Workbook;//获取数据对应的workbook
dataWorkbook.Application.Visible = false;
Excel.Worksheet dataSheet = (Excel.Worksheet)dataWorkbook.Worksheets[1]; //获取图表对应|的sheet

Github位置:
https://github.com/HymanLiuTS/OfficeTestByC-
克隆本项目:
git clone git@github.com:HymanLiuTS/OfficeTestByC-.git
获取本文源代码:
git checkout L08_2

2
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

用C# 动态生成含有报表图表的word文件

用C# 动态生成含有报表图表的word文件.刚开始,觉得没什么难的,不就是一个图表吗? 原来也做过基于模板的Excel报表,应该没问题..从网上先找一个范例研究一下....给果,大失所望,在网上只找到...
  • yandong19861103
  • yandong19861103
  • 2008-07-08 15:50
  • 1205

c#操作word图表(一)

c#操作word图表 前阵子接到了一个任务,需要实现一个功能,利用代码在word中插入图表,类似于柱状图,饼图,线条之类乱七八糟的东西,多方查找资料之后发现大概有两种方式,一种是利用Microsof...
  • xiaomingelv
  • xiaomingelv
  • 2013-12-07 10:59
  • 3015

C#中操作Word(8)—— 向Word中插入图表的三种方法(一)

一、 前言         本文主要介绍向word中插入图表的方法。方法共有三种,每一种都有自己的适用范围和利弊。介绍之前,我们准备实验用的文档,做一个如下图所示的word模板,我们要做的的是在这个...
  • lzhui1987
  • lzhui1987
  • 2016-11-14 09:55
  • 2054

c#操作word图表(二)

c#操作word图表(excel) 这一篇是对上一篇操作word类文章的补充,上一篇是通过Microsoft.Office.Interop.Graph插入图表,但样式稍差,这次是通过调用excel来...
  • xiaomingelv
  • xiaomingelv
  • 2013-12-08 10:14
  • 2030

C#操作word,签入书签,图表,表格

  • 2017-08-29 09:15
  • 19.99MB
  • 下载

C#中操作Word(7)—— 如何向Word中插入表格

一、 前言         本文主要讨论下向word中插入表格的方法。Word模型对象Document、Range、Selection中都含有一个Tables的属性,它是表格的集合,我们想要向一个wo...
  • lzhui1987
  • lzhui1987
  • 2016-11-11 08:45
  • 2215

c#/.net操作word插入表格实例

先给张效果图--- 整体是一个模板,第一个表格是替换里面的值,第二个直接动态生成插入。 。。。代码 using Abase; using System; using System.Collecti...
  • srx942173347
  • srx942173347
  • 2016-10-27 16:06
  • 2271

C#对Word文档的创建、插入表格、设置样式等操作!

下面的例子中包括C#对Word文档的创建、插入表格、设置样式等操作
  • ll2008ok
  • ll2008ok
  • 2017-03-14 16:45
  • 1439

C# MSGraph.Chart.8 画图,制表

using System; using System.Data; using System.Data.Common; using System.Data.OleDb; using System...
  • yuaijinwu
  • yuaijinwu
  • 2011-07-06 12:26
  • 1884

在.NET中不安装Office使用EPPlus生成带图表(Chart)的Excel报表

在开发.NET应用中可能会遇到需要生成带图表(Chart)的Excel报表的需求,特别是在一些ASP.NET网站中,有时候我们并不能保证Web服务器上一定安装了Office组件,所以使用微软的Offi...
  • zhoufoxcn
  • zhoufoxcn
  • 2013-11-04 01:03
  • 8049
    个人资料
    • 访问:477677次
    • 积分:7641
    • 等级:
    • 排名:第3257名
    • 原创:303篇
    • 转载:17篇
    • 译文:1篇
    • 评论:68条
    其它平台
    博客专栏