表格制作软件FineReport教程:[24]多sheet填报

2025-10-18 14:26:30

1、问题描述

多sheet的含义

多sheet报表指的就是将多个独立的报表以tab的形式组合到在一起,方便对多张填报表同进行编辑,保存数据到数据库或者批量打印,导出等。

何时使用多sheet

当我们需要同时填报多张填报表,而多个填报表挤在一个页面上有很繁杂,我们可以使用多sheet的方法,实现方便填报多张填报表,多张填报表也可以批量保存。

多sheet填报表的使用

如果使用多sheet填报表,则每个sheet需要单独设置填报属性,即每个sheet页面的设计都需要绑定内置sql,提交时保存到绑定的内置sql中。填报属性设置请参见填报属性

多sheet生成效果如下图

表格制作软件FineReport教程:[24]多sheet填报

2、打开模板

打开模板:FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\MultiFormReport\master-sub.cpt。

3、新建sheet

如下图所示,点击插入可插入一个新的sheet:

表格制作软件FineReport教程:[24]多sheet填报

4、sheet设计

在第一个sheet,即sheet1里面,将master-sub.cpt模板中产品明细部分剪切至sheet2中,如下图,给A4单元格设置新的过滤条件,订单ID=$ID:

表格制作软件FineReport教程:[24]多sheet填报

5、sheet重命名

如上图中,在sheet名字上单击鼠标右键,可选择重命名,就可以对sheet重命名了,第一个sheet命名为订单,第二个sheet命名为订单明细。

注:sheet的名字可以动态传参,即使用公式,公式里面用参数作为因子,比如说我们修改sheet1的名称为=$ID+"编号订单表",填报预览时,其效果如下图:

表格制作软件FineReport教程:[24]多sheet填报

6、效果查看

点击填报预览,可看到如下图所示的效果,

表格制作软件FineReport教程:[24]多sheet填报

1、 问题描述

报表之间可以通过参数或超链接等传递数据,同一个模板中多个sheet间是无法用参数和超级链接进行传值的,那如何实现在一个sheet中取另外一个sheet某个单元格的值即如何实现跨sheet取数呢?

2、实现思路

FineReport报表中通过使用:sheetname!cellname来实现跨sheet取值。但若sheetname中包含中划线、下划线等特殊字符就需要给sheetname加上单引号,则公式为:'sheetname'!cellname。

3、打开模板

打开模板:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\MultiSheetReport\MultiSheet.cpt。

4、 订单sheet修改

右击D8单元格,选择清除>内容,然后在D8单元格中填入公式:='订单明细'!H4+B6,即D8的值是订单明细表中的H4单元格的值加上当前sheetB6单元格的值。

注:计算时,一定要勾上“填报/分析时,保留公式用于计算”前面的选择框。

5、订单明细sheet修改

在H4单元格填入公式:=C4*D4*(1-E4),然后将H4的列宽隐藏。

6、效果查看

点击填报预览即可查看效果。

1、 问题描述

预览填报多sheet模板的时候,由于操作习惯的不同,希望可以自由选择sheet标签的位置

2、模板准备

打开模板%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\MultiSheetReport\MultiSheet.cpt,点击填报预览,如下图,可以看到sheet标签显示在下方:

表格制作软件FineReport教程:[24]多sheet填报

3、更换sheet标签位置

回到设计器界面,点击模板>模板web属性>填报页面设置,选择为该模板单独设置,在sheet标签页显示位置处选择上,如下图:

表格制作软件FineReport教程:[24]多sheet填报

4、效果查看

点击填报预览,如下图,可以看到sheet标签显示在页面的上方:

表格制作软件FineReport教程:[24]多sheet填报

1、描述

多sheet报表在实际项目中应用是比较广泛的,相比较于单sheet报表,多sheet报表一般性功能不会特别的复杂,下面介绍几个多sheet里面的典型应用。

2、重新加载当前sheet

在对当前sheet进行编辑的时候,比如说需要点击某个按钮刷新重新加载当前sheet,如下图:

表格制作软件FineReport教程:[24]多sheet填报

3、刷新当前sheet会清除当前sheet的编辑痕迹,而不影响到其他sheet。

打开设计器,选中刷新按钮,为该按钮添加一个点击事件,如下图:

表格制作软件FineReport教程:[24]多sheet填报

4、js代码为:

contentPane.reloadCurLGPPane();

5、跨sheet校验

在对多sheet进行填报的时候,往往需要从其他sheet取数参与计算,或者以其他sheet的数据为依据,对当前sheet的填报数据进行一定的约束,这个就是跨sheet校验。

跨sheet校验应用在两个方面:提交校验和js校验。

提交校验

在提交数据之前对数据进行校验,比如说,当前模板有2个sheet,sheet1里面的某个数据与sheet2里面的某个数据的和必须满足特定条件。

如下图,点击模板>报表填报属性,切换到数据校验标签,添加一个内置校验,校验公式为sheet1!A2+sheet2!B2>1000,校验出错信息为shee1的A2单元格与sheet2的B2单元格和值太小:

表格制作软件FineReport教程:[24]多sheet填报

6、js校验

使用js对多sheet进行校验,原理是将其他sheet的数值通过FR取数方法赋值给js里面定义的参数,然后参与校验。

比如说,在编辑sheet2里面的B2单元格的时候,如果sheet1的A2单元格与sheet2的B2单元格的和小于1000,则提示警告,如下图:

表格制作软件FineReport教程:[24]多sheet填报

7、在sheet2的B2单元格的控件添加一个编辑结束事件,如下图:

表格制作软件FineReport教程:[24]多sheet填报

8、js代码为:

var para=contentPane.getCellValue(0,0,1);//获取sheet1里面的A2单元格数据

var value=this.getValue();//获取当前单元格数据

var sum=parseInt(para)+parseInt(value);//将字符串转换为整形并求和

if(sum<1000){alert("shee1的A2单元格与sheet2的B2单元格和值太小");}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢