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

一、 前言

        本文主要讨论下向word中插入表格的方法。Word模型对象Document、Range、Selection中都含有一个Tables的属性,它是表格的集合,我们想要向一个word文档中添加表格,就需要调用上述三个对象的Tables属性的Add方法,将表格添加进去。
        我们先来看下,Add方法的函数原型:
Tables.Add(Range,System.Int32,System.Int32)

        Range是我们要插入表格的起始位置,经过前面几篇文章的使用,相信我们对Range对象也有了一定的了解。我们可以把Word文档可以看成以字符为单位的一个集合,并把每个元素都进行编号,而Range描述的就是两个元素之间的范围,构成它的是这个范围的起始元素编号和结束元素编号。而后面两个Int32类型的参数分别指插入表格的行和列的个数。

        接下来我们将演示在word的书签中插入表格并填充表格数据以及执行一些简单的格式化语句。

二、 利用书签插入表格

2.1 制作word模板

        我们制作如下图所示的模板,它包含一个名叫marks的书签,我们要向这个书签中插入一个表格,用来存放学生的成绩。



2.2 插入表格

        模板的导入方法和之前讲过的一样,这里不再赘述。导入之后我们利用bookmark的Range属性插入一个3行列的表格,代码如下:
private void button1_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
Document doc = app.Documents.Add("D:\\Test.docx");
app=doc.Application;
doc.ActiveWindow.Visible = true;
foreach (Bookmark bk in doc.Bookmarks)
{
if (bk.Name == "marks")
{
Range range = bk.Range;
range.Tables.Add(range,3,2);
Table tb = range.Tables[1];
tb.set_Style("网格型¨ª");
}
}

第11行,是调用range的Tables变量加入一个3行2列的表格;

第12行,取出了这个表格,然后把它放到一个Table类型的变量中,这里需要注意的是:凡是我们add进Tables的表格,我们都可以通过下标把它取出来,但是下标是从1开始的,而非从0开始。
第13行是设置表格的基本风格,包含哪些风格我们可以在word文档的表格插入表格时在工具栏处进行查看。

        上述代码执行之后,我们就在word中成功插入了一个表格:



2.3向表格中填充数据

        我们利用Table的Cell方法向表格中填写数据。Cell接收两个参数一个表示表格单元格所在的行号,另一个表示表格单元格所在的列号,行号和列号都是从1开始的。每个单元格也都有自己的Range,我们将数据赋给该Range的Text属性即可完成对每个单元格的填充:
tb.Cell(1, 1).Range.Text = "姓名";
tb.Cell(1, 2).Range.Text = "成¦绩";
tb.Cell(2, 1).Range.Text = "张三¨";
tb.Cell(2, 2).Range.Text = "89";
tb.Cell(3, 1).Range.Text = "李四";
tb.Cell(3, 2).Range.Text = "98"; 

        最后我们得到了如下所示填充完数据的表格:



完整的代码:
private void button1_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
Document doc = app.Documents.Add("D:\\Test.docx");
app=doc.Application;
doc.ActiveWindow.Visible = true;
foreach (Bookmark bk in doc.Bookmarks)
{
if (bk.Name == "marks")
{
Range range = bk.Range;
range.Tables.Add(range,3,2);
Table tb = range.Tables[1];
tb.set_Style("网ª?格?型¨ª");
tb.Cell(1, 1).Range.Text = "姓?名?";
tb.Cell(1, 2).Range.Text = "成¨¦绩¡§";
tb.Cell(2, 1).Range.Text = "张?三¨y";
tb.Cell(2, 2).Range.Text = "89";
tb.Cell(3, 1).Range.Text = "李¤?四?";
tb.Cell(3, 2).Range.Text = "98"; 
}
}

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


Github位置:

https://github.com/HymanLiuTS/OfficeTestByC-

克隆本项目:

git clone [email protected]:HymanLiuTS/OfficeTestByC-.git

获取本文源代码:

git checkout L07



你可能感兴趣的:(C#中的Office操作专栏,C#中的office操作编程)