当在线打开的Word文档中包含有Table时,如何给Table中的单元格赋值呢?如果是仅仅几个数据,用户可以一个个手动填写,但若是从数据库中读取的大量数据,再想一个个填写那可就真正让人头疼了,在这种情况下用户肯定会提出动态填充word中表格数据的需求。这时可以借助PageOffice开发平台来实现。

下面我就以生成一张人员信息表为例,演示一下如何简单的给Word文档中的Table赋值。

具体步骤如下:

第一步:请先安装PageOffice的服务器端的安装程序,之后在你的网站中根目录下添加pageoffice文件夹(在PageOffice官方网站的“下载中心”中可下载相应的压缩包,解压之后直接将pageoffice文件夹拷贝到根目录下就可以了)。

第二步:在网站中创建动态页面WordSetTable.aspx

先在工具箱中拖动一个PageOfficeCtrl控件到页面上(PageOfficeCtrl控件位于工具箱最下方),并设置控件所在层(<div></div>)的高和宽,否则Word文档无法正常显示。

第三步:WordSetTable.aspx.cs后台编写代码。打开Word文件,部分代码如下:

//设置服务器页面

PageOfficeCtrl1.ServerPage = "pageoffice/server.aspx";

PageOffice.WordWriter.WordDocument doc = new PageOffice.WordWriter.WordDocument();

//打开数据区域,“PO_regTable”为打开的Word文件中插入的书签名称

PageOffice.WordWriter.DataRegion dataRegion = doc.OpenDataRegion("PO_regTable");

//打开tableOpenTable(index)方法中的index代表Word文档中table位置的索引,从1开始

PageOffice.WordWriter.Table table = dataRegion.OpenTable(1);

//table中的单元格赋值, OpenCellRC(int,int)中的参数分别代表第几行、第几列,从1开始

table.OpenCellRC(3, 1).Value = "A公司";

table.OpenCellRC(3, 2).Value = "开发部";

table.OpenCellRC(3, 3).Value = "李清";

//插入一行,InsertRowAfter方法中的参数代表第几行,1开始

table.InsertRowAfter(3);

table.OpenCellRC(4, 1).Value = "B公司";

table.OpenCellRC(4, 2).Value = "销售部";

table.OpenCellRC(4, 3).Value = "张三";

PageOfficeCtrl1.SetWriter(doc);

//打开Word文件

PageOfficeCtrl1.WebOpen("doc/test.doc", PageOffice.OpenModeType.docNormalEdit, "张佚名");

说明:上述代码中给单元格所赋的值可以使从数据库中动态读取的数据,当数据库中有多条纪录时只需要循环插入行,并赋值即可。

如上所述,就可轻松简单的实现给Word中的Table赋值了,利用上述方法还可实现生成工资表、考勤表、成绩表等等报表,只需改动打开的Word模版文件即可。