如何实现填报表不同单元格的自动关联填充
很多做过统计报表的人都遇到过这样一种情况:每个月填入的新数据比较少,绝大多数都是一些固定的数据,而这些固定数据之间有着关联对应的关系,如果能在报表中加入一些关联关系,那么只需要填入其中一种数据,其他的数据信息就会根据关联关系自动被填充好,这样即提高了统计人员的工作效率,也减少了可能误填的情况,那么如何实现填报表不同单元格的自动关联填充呢?
实现思路:
利用快逸报表中的自动计算功能就可以完成不同单元格信息的自动关联,所谓的自动计算,是在填报的时候,当用户录入了某些数据后,系统会自动算出另外一部分单元格的值,由于自动计算大部分时候是在网页上响应的,即用户在网页上录入数据时触发另外一些单元格自动计算,因此自动计算表达式采用的是javascript表达式或者函数,并且可以引用单元格的值。
实现步骤:
第一步:制作报表模版
设计一张填报表,格式如下图:
表单元格设置.PNG" height="316" />
其中,B2单元格要在填报属性中设置成可写单元格:
在C2单元格的填报属性中设置自动计算函数,如下图中的getName(B2),此函数的作用是在getName()函数中传入B1单元格的值,然后进行自动计算:
第二步:编写自动计算函数
在jsp文件中编写自动计算函数getName(),当用户在网页上录入数据时触发此函数来完成单元格C2自动计算:
<script type=”text/javascript”>
var idArray = new Array(1,2,3,4,5); //生成部门ID的数组
var nameArray = new Array(‘市场部’,'研发部’,'技术支持部’,'咨询部’,'综合部’);
//生成部门名称的数组
function getName(id){ //自动计算函数
var name = “”;
for(var i=0;i<idArray.length;i++){ //通过循环判断B1单元格输入的值,来计算出应当返回的值
if(idArray[i]==id){
name = nameArray[i];
break;
}
}
return name; // 返回自动计算出的值到C2单元格中
}
</script>
预览效果:设计好的报表模版和jsp文件放到网页上展现,效果如下图所示:
当鼠标焦点离开部门ID单元格后,在部门名称单元格便自动关联填充上此ID相对应的部门名称:
利用自动计算函数,我们还可以完成多种业务逻辑功能,比如日期的换算,金额的累加或HTML内容样式变换等等,由此简化用户的输入,减少错误率,而且用于自动计算的函数可以由客户基于JavaScript自定义实现,非常灵这种方法简单易行,方便快速调试,省去了大量编码带来的繁琐与不便。