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

一、 前言

        本文主要介绍向word中插入图表的方法。方法共有三种,每一种都有自己的适用范围和利弊。介绍之前,我们准备实验用的文档,做一个如下图所示的word模板,我们要做的的是在这个名叫chart的书签中插入一个图表,下面然后我将逐一进行介绍这三种方法:

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


方法一:插入OLEObject类型的图表

        这种方法适用于所有版本的excel,但是插入的图表界面较为粗糙,word2007之后图表的显示效果得到了很大的提升,所以这种类型的图表逐渐被放弃。该种方法只建议在word2003之前的版本中使用。

        首先我们需要先引入Microsoft.Office.Interop.Graph的引用,在添加引入的.Net标签页找到如下图圈出的引用,然后点击确定。

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


        为了防止命名控制冲突,我们可以使用using将Microsoft.Office.Interop.Word和Microsoft.Office.Interop.Graph重命名。
using Word=Microsoft.Office.Interop.Word;
using Graph=Microsoft.Office.Interop.Graph;

        完成了上面的工作后我们可以开始了,主要的思路是利用.InlineShapes的AddOLEObje()接口OLEObject类型的图表的图标插入,主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
Word.Document doc = app.Documents.Add("D:\\Test.docx");
app=doc.Application;
doc.ActiveWindow.Visible = true;
foreach (Word.Bookmark bk in doc.Bookmarks)
{
if (bk.Name == "chart")
{
object oClassType = "MSGraph.Chart.8";
Graph.Axis axis;//x坐标
Word.Range range = bk.Range;
Graph.Chart wdchart = (Graph.Chart)range.InlineShapes.AddOLEObject(oClassType).OLEFormat.Object;
wdchart.Application.DataSheet.Cells.Clear();//清空数据集数据
//axis.MaximumScale = 1;//设置最大刻度

//填充数据集 
int i, j;
for (i = 0; i < 3; i++) 
{
wdchart.Application.DataSheet.Cells[i + 1, 1] = "列" + i.ToString();
}
for (i = 0; i < 4; i++)//填充数据 
{
for (j = 0; j < 4; j++)
{
wdchart.Application.DataSheet.Cells[i + 2, j + 1] = i * j;
}
}

//根据y轴画图 
wdchart.Application.PlotBy = Graph.XlRowCol.xlColumns;

wdchart.Legend.Delete();
wdchart.Height = 280;
wdchart.Width = 600;

//更新图标并退出 
wdchart.Application.Update();
wdchart.Application.Quit();
wdchart = null;
}
}

//doc.SaveAs("E:\\Test.docx");
//app.Quit();
}


        上图中主要代码已经列出,原理很简单,注释很清楚了不再解释,如果需要源代码请克隆本项目,并获取相应的版本:

        本方法运行结果如下:



Github位置:
https://github.com/HymanLiuTS/OfficeTestByC-
克隆本项目:
git clone [email protected]:HymanLiuTS/OfficeTestByC-.git
获取本文源代码:
git checkout L08_1

待续…

你可能感兴趣的:(C#中的office操作编程,C#操作office,WORD操作,word插入图标曲线)