ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## **给Word中的Table赋值** Word中的table是要借助数据区域(DataRegion)实现的,要求数据区域完整的包含了整个Table的内容,这样才可以通过数据区域控制和操作table。因此,要想使用table,则必须在word文件中插入书签(数据区域,即书签的添加使用与实现方法在“导出word.doc”文档中已经详细介绍过了,此处不再赘述)。而table的插入,既可以在Word模版中书签处手动插入:工具栏“插入”→“表格”,亦可以在程序中通过数据区域动态添加。 ### **一、给Word模板中的table手动插入书签。** **1. 把Table包含在数据区域中。** 例如:有这样一个人员信息表,想要在这个人员信息表中填充数据,则必须先将整个成绩表的table包含到一个“书签”中。 | | 人员信息表 | | | --- | --- | --- | | 公司名称 | 部门名称 | 员工姓名 | | .| | | 选择表格,然后插入书签,比如书签名为:PO_regTable,操作步骤如下图所示: :-: ![](https://box.kancloud.cn/37c1f046ce345b540d39a11d7cd927b3_957x618.png) >[danger]注:插入书签的时候一定要先选中整个table,然后再点击插入书签按钮进行插入。 **2. 编写代码给Table赋值。** ~~~ PageOffice.WordWriter.WordDocument doc = new PageOffice.WordWriter.WordDocument(); //获取Table所在的数据区域对象 PageOffice.WordWriter.DataRegion dataRegion = doc.OpenDataRegion("PO_regTable"); //打开table,openTable(index)方法中的index代表当前书签中table位置的索引,从1开始 PageOffice.WordWriter.Table table = dataRegion.OpenTable(1); //给table中的单元格赋值, OpenCellRC(行, 列) table.OpenCellRC(3, 1).Value = "A公司"; table.OpenCellRC(3, 2).Value = "开发部"; table.OpenCellRC(3, 3).Value = "李清"; //插入一空行,InsertRowAfter方法中的参数表示在哪个单元格下面插入一行 table.InsertRowAfter(table.OpenCellRC(3, 3)); table.OpenCellRC(4, 1).Value = "B公司"; table.OpenCellRC(4, 2).Value = "销售部"; table.OpenCellRC(4, 3).Value = "张三丰"; PageOfficeCtrl1.SetWriter(doc); PageOfficeCtrl1.ServerPage = Request.ApplicationPath + "/pageoffice/server.aspx"; PageOfficeCtrl1.WebOpen("doc/test.doc",PageOffice.OpenModeType.docNormalEdit,"张佚名"); ~~~ 填充数据后的表格如下图所示: :-: ![](https://box.kancloud.cn/ea7c4728a7afea41d4ac21de394c916a_1008x800.png) >[info]请参考PageOffice产品开发包中Samples4示例: >一、17、给Word文档中Table赋值的简单示例 ### **二、程序动态地给word中创建table。** 同样地,程序动态地给word添加table时需要在制作模板的时候先插入一个数据区域,命名为:PO_table1,这样就可以通过获取到数据区域PO_table1之后,用数据区域对象DataRegion的CreateTable方法在此数据区域所在位置新建一个表格。CreateTable方法有三个参数,分别是:行、列和表格类型。表格类型目前分三种,如下表所示。 | 成员名称 |值 |说明 | | --- | --- | --- | | wdAutoFitFixed | 0 | 将表格设置为固定大小而与内容无关,因此不会自动调整表格大小。 | | wdAutoFitContent | 1 | 根据表格中包含的内容自动调整表格的大小。 | | wdAutoFitWindow | 2 | 根据活动窗口的宽度自动调整表格大小。 | **代码实现:** ~~~ WordDocument doc = new WordDocument(); PageOffice.WordWriter.DataRegion drTable1 = doc.OpenDataRegion("PO_table1"); PageOffice.WordWriter.Table table1 = drTable1.CreateTable(3, 5, WdAutoFitBehavior.wdAutoFitWindow); table1.OpenCellRC(1, 1).MergeTo(3, 1); table1.OpenCellRC(1, 1).Value="合并后的单元格"; //给表格table1中剩余的单元格赋值 for (int i = 1; i < 4; i++) { table1.OpenCellRC(i, 2).Value = "AA" + i.ToString(); table1.OpenCellRC(i, 3).Value = "BB" + i.ToString(); table1.OpenCellRC(i, 4).Value = "CC" + i.ToString(); table1.OpenCellRC(i, 5).Value = "DD" + i.ToString(); } //在"PO_table1"后面动态创建一个新的数据区域"PO_table2",用于创建新的一个5行5列的表格table2 PageOffice.WordWriter.DataRegion drTable2 = doc.CreateDataRegion("PO_table2", DataRegionInsertType.After, "PO_table1"); PageOffice.WordWriter.Table table2 = drTable2.CreateTable(5, 5, WdAutoFitBehavior.wdAutoFitWindow); //给新表格table2赋值 for (int i = 1; i < 6; i++) { table2.OpenCellRC(i, 1).Value = "AA" + i.ToString(); table2.OpenCellRC(i, 2).Value = "BB" + i.ToString(); table2.OpenCellRC(i, 3).Value = "CC" + i.ToString(); table2.OpenCellRC(i, 4).Value = "DD" + i.ToString(); table2.OpenCellRC(i, 5).Value = "EE" + i.ToString(); } PageOfficeCtrl1.SetWriter(doc); PageOfficeCtrl1.ServerPage = Request.ApplicationPath + "/pageoffice/server.aspx"; PageOfficeCtrl1.WebOpen("doc/createTable.doc",PageOffice.OpenModeType.docNormalEdit,"张佚名"); ~~~ **生成效果:** :-: ![154.](https://box.kancloud.cn/473bbf2926e838b2f46022de303e4960_1588x917.png) >[info]请参考PageOffice产品开发包中Samples4示例的“高级功能”演示: >二、43、在Word文档中动态创建表格并赋值(专业版、企业版)