Tables.Add(Range,System.Int32,System.Int32)
Range是我们要插入表格的起始位置,经过前面几篇文章的使用,相信我们对Range对象也有了一定的了解。我们可以把Word文档可以看成以字符为单位的一个集合,并把每个元素都进行编号,而Range描述的就是两个元素之间的范围,构成它的是这个范围的起始元素编号和结束元素编号。而后面两个Int32类型的参数分别指插入表格的行和列的个数。
接下来我们将演示在word的书签中插入表格并填充表格数据以及执行一些简单的格式化语句。我们制作如下图所示的模板,它包含一个名叫marks的书签,我们要向这个书签中插入一个表格,用来存放学生的成绩。
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开始。上述代码执行之后,我们就在word中成功插入了一个表格:
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();
}
https://github.com/HymanLiuTS/OfficeTestByC-
克隆本项目:
git clone [email protected]:HymanLiuTS/OfficeTestByC-.git
获取本文源代码:
git checkout L07