Word中的table是要借助数据区域(DataRegion)实现的,要求数据区域完整的包含了整个Table的内容,这样才能够经过数据区域控制和操做table。所以,要想使用table,则必须在word文件中插入书签。而table的插入,既能够在Word模版中书签处手动插入:工具栏“插入”→“表格”,亦能够在程序中经过数据区域动态添加。web
1. 把Table包含在数据区域中。
例如:有这样一我的员信息表,想要在这我的员信息表中填充数据,则必须先将整个成绩表的table包含到一个“书签”中。工具
人员信息表 | ||
---|---|---|
公司名称 | 部门名称 | 员工姓名 |
. |
选择表格,而后插入书签,好比书签名为:PO_regTable,操做步骤以下图所示:spa
注:插入书签的时候必定要先选中整个table,而后再点击插入书签按钮进行插入。3d
2. 编写代码给Table赋值。code
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, "张三");
填充数据后的表格以下图所示:orm
请参考PageOffice产品开发包中Samples4示例:
1、1七、给Word文档中Table赋值的简单示例server
一样地,程序动态地给word添加table时须要在制做模板的时候先插入一个数据区域,命名为:PO_table1,这样就能够经过获取到数据区域PO_table1以后,用数据区域对象DataRegion的CreateTable方法在此数据区域所在位置新建一个表格。CreateTable方法有三个参数,分别是:行、列和表格类型。表格类型目前分三种,以下表所示。对象
成员名称 | 值 | 说明 |
---|---|---|
wdAutoFitFixed | 0 | 将表格设置为固定大小而与内容无关,所以不会自动调整表格大小。 |
wdAutoFitContent | 1 | 根据表格中包含的内容自动调整表格的大小 |
wdAutoFitWindow | 2 | 根据活动窗口的宽度自动调整表格大小。 |
代码实现:blog
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,"张佚名");
生成效果:索引
请参考PageOffice产品开发包中Samples4示例的“高级功能”演示: 2、4三、在Word文档中动态建立表格并赋值(专业版、企业版)