反饋已提交

網絡繁忙

當前為10.0版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

多Sheet应用

1. 概述

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

示例一:重新加载当前 Sheet

示例二:跨 Sheet 校验

示例三:多 Sheet 相互依赖关系

2. 重新加载当前Sheet

此处重新加载仅表示恢复初始状态数据。

2.1 数据准备

新建普通报表,新建数据库查询 ds1,SQL 查询语句为:SELECT * FROM 产品

2.2 表格设计

1)Sheet1 :将 ds1 中「产品名称」、「库存量」数据列分别拖入 A2、B2 单元格,输入对应标题。A2、B2 单元格添加「文本控件」,D2 单元格添加 「按钮控件」。表格设计如下图所示:

1611556474991808.png

2)Sheet2:将 ds1 中「产品名称」、「订购量」数据列分别拖入 A2、B2 单元格,输入对应标题。A2、B2 单元格添加「文本控件」。表格设计如下图所示:

1611556505713020.png

2.3 按钮控件设置

在 Sheet1 中,选中「按钮控件」,设置「属性>按钮名字」为「刷新」,再为该按钮添加一个点击事件,如下图所示:

Snag_15b0615c.png

JavaScript 代码为:

contentPane.reloadCurLGPPane();

注:contentPane.reloadCurLGPPane() 只是重新刷新当前 Sheet 页使其数据恢复初始状态,并不会触发报表重新计算或取数。即若报表中含有公式,或数据库中数据发生变化,只能使用 contentPane.refreshAllSheets()  刷新所有 Sheet。

2.4 效果预览

保存报表,点击「填报预览」,效果如下图所示: 

0E4BD297-DA74-4B4F-9CE5-52BB932C1B64.GIF

注:不支持移动端。

3. 跨Sheet校验

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

3.1 表格设计

1)Sheet1表格设计如下图所示:

图片.png

2)新建Sheet2页面,表格设计如下图:

图片.png

3.2 提交校验

跨 Sheet 校验应用在两个方面:提交校验和 JS 校验 。

在提交数据之前对数据进行校验,例如,当前模板有 2 个 Sheet,Sheet1 里面的某个数据与 Sheet2 里面的某个数据的和必须满足特定条件。

点击模板>报表填报属性,切换到数据校验标签,添加一个内置校验,如下图所示:

图片.png

校验公式为'sheet1'!A2+'sheet2'!B2>1000,校验出错信息为 shee1 的 A2 单元格与sheet2 的 B2 单元格和值太小

注:校验公式中直接跨 Sheet 取数进行计算,跨 Sheet 取数详细请查看多 Sheet 数据计算

3.3 JS 校验

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

给 Sheet2 的 B2 单元格的控件添加一个编辑结束事件,如下图所示:

图片.png

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单元格和值太小");}

由上图的 JS 代码可知,在 JS 中进行跨 Sheet 校验,获取其他 Sheet 的单元格值可通过方法 contentPane.getCellValue(sheet 号,列号,行号); //sheet 号,列号,行号是从 0 开始来获取,详细请参照 填报预览 JS 实例

3.4 效果预览

PC端

1)保存模板,点击填报预览,效果如下图所示:

图片.png

2)移动端

1601189588990567.jpg

4. 多Sheet相互依赖关系

在多 Sheet 引用中,Sheet间存在相互依赖的关系。

4.1 表格设计

1)新建 3 个 Sheet,将 Sheet 分别重命名为 A、B、C,报表设计如下图所示:

Sheet1(重命名为A):

Sheet2(重命名为B):

注:若在 Sheet2 中,见 A2 单元格公式改为='A'!A2,那么Sheet1和Sheet2就会出现由于依赖关系引发的计算错误,Sheet1 和 Sheet2 的 A2 单元格都不能显示。

Sheet3(重命名为C):


4.2 效果预览

点击数据分析预览,(没改动Sheet2的A2单元格的公式前)效果如下图所示:

5.GIF

改动Sheet2的A2单元格的公式后,如下图所示:

6.GIF

注:通过2张图我们可以发现由于依赖关系而引发的计算错误。

5. 模板下载

已完成模板可参见:

%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\MultiSheetReport\重新加载当前Sheet.cpt

%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\MultiSheetReport\跨Sheet校验.cpt

%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\MultiSheetReport\多Sheet相互依赖关系.cpt

点击下载模板:

重新加载当前Sheet.cpt

跨Sheet校验.cpt

多Sheet相互依赖关系.cpt

附件列表


主題: 原简体文档
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉