关闭

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

标签: C#操作officeWORD操作word插入表格
2673人阅读 评论(2) 收藏 举报
分类:
        我们接着上一文的内容介绍在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网站的观点或立场
    个人资料
    • 访问:373120次
    • 积分:6515
    • 等级:
    • 排名:第3934名
    • 原创:292篇
    • 转载:17篇
    • 译文:1篇
    • 评论:61条
    其它平台
    博客专栏