PageOfficeV4.0给Word中的Table赋值

Word中的table是要借助数据区域(DataRegion)实现的,要求数据区域完整的包含了整个Table的内容,这样才可以通过数据区域控制和操作table。因此,要想使用table,则必须在word文件中插入书签。而table的插入,既可以在Word模版中书签处手动插入:工具栏“插入”→“表格”,亦可以在程序中通过数据区域动态添加。

一、给Word模板中的Table手动插入书签。

1. 把Table包含在数据区域中。
例如:有这样一个人员信息表,想要在这个人员信息表中填充数据,则必须先将整个成绩表的table包含到一个“书签”中。

 人员信息表 
公司名称部门名称员工姓名
.  

选择表格,然后插入书签,比如书签名为:PO_regTable,操作步骤如下图所示:

注:插入书签的时候一定要先选中整个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, "张三");

填充数据后的表格如下图所示:

请参考PageOffice产品开发包中Samples4示例:
一、17、给Word文档中Table赋值的简单示例

二、程序动态地给word中创建table。

同样地,程序动态地给word添加table时需要在制作模板的时候先插入一个数据区域,命名为:PO_table1,这样就可以通过获取到数据区域PO_table1之后,用数据区域对象DataRegion的CreateTable方法在此数据区域所在位置新建一个表格。CreateTable方法有三个参数,分别是:行、列和表格类型。表格类型目前分三种,如下表所示。

成员名称说明
wdAutoFitFixed0将表格设置为固定大小而与内容无关,因此不会自动调整表格大小。
wdAutoFitContent1根据表格中包含的内容自动调整表格的大小
wdAutoFitWindow2根据活动窗口的宽度自动调整表格大小。

代码实现:

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,"张佚名");

生成效果:

154.

请参考PageOffice产品开发包中Samples4示例的“高级功能”演示:
二、43、在Word文档中动态创建表格并赋值(专业版、企业版)

转载于:https://my.oschina.net/u/3850288/blog/2050293

在Vue3,动态给表格赋值与Vue2类似,也是使用v-for指令根据数据源动态渲染表格内容。ElementUI的表格组件`<el-table>`也可以通过v-for指令来实现动态赋值。 首先,在Vue实例定义一个数据数组`tableData`,用于存储表格的数据源。 ```javascript import { ref } from 'vue' export default { setup() { const tableData = ref([ { name: '张三', age: 18, gender: '男' }, { name: '李四', age: 20, gender: '女' }, { name: '王五', age: 22, gender: '男' } ]) return { tableData } } } ``` 然后,在模板使用`<el-table>`组件,并通过v-for指令遍历`tableData`数组,动态生成表格行和列。 ```html <el-table :data="tableData"> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <el-table-column prop="gender" label="性别"></el-table-column> </el-table> ``` 其,`:data`属性用于绑定表格的数据源,`<el-table-column>`组件的`prop`属性用于指定数据源对应的属性名,`label`属性用于指定表头显示的文本。 如果需要动态更新表格数据,只需要修改`tableData`数组的数据即可。例如: ```javascript tableData.value.push({ name: '赵六', age: 24, gender: '女' }); ``` 这样,新的数据将会自动添加到表格。需要注意的是,在Vue3,由于响应式数据的实现方式有所改变,需要使用`value`属性来访问`ref`定义的响应式数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值