## **给Word中的Table赋值**
Word中的table是要借助数据区域(DataRegion)实现的,要求数据区域完整的包含了整个Table的内容,这样才可以通过数据区域控制和操作table。因此,要想使用table,则必须在word文件中插入书签。而table的插入,既可以在Word模版中书签处手动插入:工具栏“插入”→“表格”,亦可以在程序中通过数据区域动态添加。
### **一、给Word模板中的Table手动插入书签。**
**1. 把Table包含在数据区域中。**
例如:有这样一个人员信息表,想要在这个人员信息表中填充数据,则必须先将整个成绩表的table包含到一个“书签”中。
| | 人员信息表 | |
| --- | --- | --- |
| 公司名称 | 部门名称 | 员工姓名 |
| .| | |
选择表格,然后插入书签,比如书签名为:PO_regTable,操作步骤如下图所示:
:-: 
>[danger]注:插入书签的时候一定要先选中整个table,然后再点击插入书签按钮进行插入。
**2. 编写代码给Table赋值。**
~~~
PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz");
WordDocument doc = new WordDocument();
DataRegion dataRegion = doc.openDataRegion("PO_regTable");
Table table = dataRegion.openTable(1); //index代表当前书签中table位置的索引,从1开始
table.openCellRC(3, 1).setValue("A公司");//openCellRC(行, 列),索引从1开始
table.openCellRC(3, 2).setValue("开发部");
table.openCellRC(3, 3).setValue("李清");
//插入一行,insertRowAfter方法中的参数代表在哪个单元格下面插入一个空行
table.insertRowAfter(table.openCellRC(3, 3));
table.openCellRC(4, 1).setValue("B公司");
table.openCellRC(4, 2).setValue("销售部");
table.openCellRC(4, 3).setValue("张三丰");
poCtrl1.setWriter(doc);
poCtrl1.webOpen("doc/test.doc", OpenModeType.docNormalEdit, "张三");
~~~
填充数据后的表格如下图所示:
:-: 
>[info]请参考PageOffice产品开发包中Samples4示例:
>一、17、给Word文档中Table赋值的简单示例
### **二、程序动态地给word中创建table。**
同样地,程序动态地给word添加table时需要在制作模板的时候先插入一个数据区域,命名为:PO_table1,这样就可以通过获取到数据区域PO_table1之后,用数据区域对象DataRegion的CreateTable方法在此数据区域所在位置新建一个表格。CreateTable方法有三个参数,分别是:行、列和表格类型。表格类型目前分三种,如下表所示。
| 成员名称 | 值 | 说明 |
| --- | --- | --- |
|wdAutoFitFixed | 0 | 将表格设置为固定大小而与内容无关,因此不会自动调整表格大小。 |
|wdAutoFitContent | 1 | 根据表格中包含的内容自动调整表格的大小 |
|wdAutoFitWindow | 2 |根据活动窗口的宽度自动调整表格大小。 |
**代码实现:**
~~~
PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
WordDocument doc = new WordDocument();
//在word中指定的"PO_table1"的数据区域内动态创建一个3行5列的表格
Table table1 = doc.openDataRegion("PO_table1").createTable(3,5,WdAutoFitBehavior.wdAutoFitWindow);
//合并(1,1)到(3,1)的单元格并赋值
table1.openCellRC(1,1).mergeTo(3,1);
table1.openCellRC(1,1).setValue("合并后的单元格");
//给表格table1中剩余的单元格赋值
for(int i=1;i<4;i++){
table1.openCellRC(i, 2).setValue("AA" + String.valueOf(i));
table1.openCellRC(i, 3).setValue("BB" + String.valueOf(i));
table1.openCellRC(i, 4).setValue("CC" + String.valueOf(i));
table1.openCellRC(i, 5).setValue("DD" + String.valueOf(i));
}
//在"PO_table1"后面动态创建一个新的数据区域"PO_table2",用于创建新的一个5行5列的表格table2
DataRegion drTable2= doc.createDataRegion("PO_table2", DataRegionInsertType.After, "PO_table1");
Table table2=drTable2.createTable(5,5,WdAutoFitBehavior.wdAutoFitWindow);
//给新表格table2赋值
for(int i=1;i<6;i++){
table2.openCellRC(i, 1).setValue("AA" + String.valueOf(i));
table2.openCellRC(i, 2).setValue("BB" + String.valueOf(i));
table2.openCellRC(i, 3).setValue("CC" + String.valueOf(i));
table2.openCellRC(i, 4).setValue("DD" + String.valueOf(i));
table2.openCellRC(i, 5).setValue("EE" + String.valueOf(i));
}
poCtrl.setWriter(doc);//不要忘记此行代码
poCtrl.setServerPage(request.getContextPath()+"/poserver.zz");
poCtrl.webOpen("doc/test.doc", OpenModeType.docNormalEdit,"张佚名");
~~~
**生成效果:**
:-: 
>[info]请参考PageOffice产品开发包中Samples4示例的“高级功能”演示:
>二、43、在Word文档中动态创建表格并赋值(专业版、企业版)
- 序言
- 产品简介
- PageOffice试用版和和正式版的区别
- PageOffice对客户端的要求
- PageOffice客户端安装步骤
- PageOffice常用功能与工作原理
- OA系统中的文档在线编辑及流转
- 痕迹保留、键盘批注、手写批注
- 文件并发控制功能
- 与数据库的关系
- SaveDataPage和SaveFilePage的区别
- 调用ZoomSeal签章系统中的印章
- 使用RunMacro运行Office的宏
- 为什么采用弹窗方式打开文件
- POBrowser弹窗方式的具体使用
- Word篇
- 常用接口对象
- WordDocument类
- DataRegion类
- DataTag类
- Paragraph类
- Shape类
- Table类
- Column类
- Row类
- Cell类
- WaterMark类
- DataRegion与DataTag的区别
- 编辑模板中的数据区域
- 动态填充Word文档
- 动态插入Word表格
- 动态创建数据区域
- 数据区域点击事件
- 实现Word文档编辑区域控制
- Word文档全文检索
- Word文件版本对比功能
- 实现用户自定义Word模板
- 实现多个Word文件合并
- Excel篇
- 常用接口对象
- Workbook类
- Sheet类
- Table类
- Cell类
- 动态填充Excel文档
- Excel指定单元格点击事件
- 实现用户自定义Excel模板
- 读取Excel文档中的数据
- 隐藏Excel的行号列标
- Java篇
- PageOffice集成说明
- 动态生成Word文件
- 给Word中的Table赋值
- 动态生成Excel文件
- Maven项目中引用PageOffice
- FileMaker组件功能简介
- ASP.NET篇
- PageOffice集成说明
- 给Word中的Table赋值
- 动态生成Word文档
- FileMaker组件功能简介
- 其他
- POPDF组件功能简介
- PPT相关功能简介
- 实现多人同时编辑一份文档
- PageOffice与Apache POI的区别
- 如何录制宏和编辑宏
- PDF篇
- PDF盖章