帆软报表使用总结
- 如果页面不分页,可以把页面纸张大小设置小一点,横向自适应,访问URL后增加&__bypagesize__=false
这样左右是自适应的,上下按实际大小显示,这种可以避免有上下滚动条时,下方有大量空白。 - 如果需要在移动端展示,别用悬浮图表,移动端不支持悬浮元素。
- 表单标题通过数据集直接获取,获取不到,可以采用两种形式获取
- 借助单元格
将数据集结果放到单元格中,标题公式通过引用单元格获取;
- 通过sql函数获取
在公式中直接通过sql函数获取,例如:sql("gsjg_xc","SELECT '测试' as name from dual ",1,1)。
有些函数,表单标题不支持!
- 帆软中调用外部函数
parent.window.函数名称(参数列表)
- 帆软报表弹出对话框没有出现横向滚动条,解决方案是
Body布局改为绝对布局,固定大小
- 获取数据集记录数
ROWCOUNT("ds1"),ds1为数据集名称
- 表单中获取表单参数控件中的参数的值并修改
var state=_g().parameterEl.getWidgetByName("a");
state.setValue(1);
-
我们在使用表单的时候,有时候可能想实现点击某按钮,隐藏某个报表块或者图表块,那么在按钮中添加点击事件,js如下:
var Widget = this.options.form.getWidgetByName('report0');
Widget.invisible();
如果要显示:Widget.visible();
- 手机端展示cpt要采用h5展示的话,需要在分页预览下才可以,路径后面加上op=h5_page这样在手机上看的话会根据手机浏览器的高度全屏进行分页,如果不想分页采用滑动的形式查看的话,再加上_bypagesize_=false使其不分页预览
,如果想横向不出现滚动条自适应显示的话,需要将单元格的内容控制在上方的标尺刻度为430范围内(适应大部分的手机)即可自适应屏幕显示,不出现滚动条。
- 填报导入Excel,根据标题匹配导入excel,报表标题变为excel标题
设计器版本号:8.0.0 Build # 2016.10.18.12.22.22.598
bug现象补充:报表中有四列的标题顺序与excel中不同,报表中为类别、供应商、成本价、单价,excel中为供应商、类别、单价、成本价。
设置了<ExcelMatchTitle match = "true"/>,重启后,如果报表中标题顺序和excel中顺序不同,且都是从A1开始,excel导入后报表标题会变成excel中的顺序。
报表模板:
excel:
预览:
导入后:
如果excel是从B2开始的(即在excel中插入一行和一列),报表不变,导入后标题顺序则是以报表为准。
excel:
导入后:
但是还是存在bug,如果Excel中就一条数据,就会有问题,标题会当成一条记录导入
- 排序
排序既可以对数字也可以对汉字进行排序,但是为空数据不能参与排序,如果有空的话就会报错
- 如果排序需要加上序号的话,序号可以这样设置,如下:
选中序号列,右击条件属性,设置新值
然后设置分页:
- 排序
例如对监测值进行排序,右击监测值标题,选择超链接,选择动态参数
- 升序
注:参数a的值需选择公式,而参数asc和desc的值不可以选择公式,只能是字符串。参数a的意义在于,点击一次超级链接就替换一次a的值,那么在下面进行排序就可以根据a的值来决定是升序还是降序。
- 降序
- 对第一个数据列设置排序公式,输入公式if($a==1,eval($asc),eval($desc))
这样就可以实现排序啦。
- 给参数下拉框赋值为公式的话,以年为例子,如下:
SPLIT(RANGE(TOINTEGER(format(now(),'yyyy')),2012,-1),',')
结果为
- 帆软报表点击图表,图表外框颜色为黑色,去掉黑色显示的办法如下:
在报表加载结束事件中添加:
_g().curLGP.hideSelectFrame();
即可。
- 报表与微信企业号集成,自适应的话需要加上&op=h5参数。
- 报表中图表自定义最大值,采用公式定义,如果联动的话,最大值并不会改变,因为公式是在页面生成时就运行结束了,不会再变化的 。
- 数据集中用到参数,可以使用公式进行判断,例如:
Select * from test where 1=1
${
If(param1==””,””,” and a=’”+param1+”’”)
}
- 模板自适应设置,如果自己设置了自适应属性,将“使用全局配置”复选框去掉。
- 在手机端显示的表单,有时候自适应右边会有多余的空白,解决方案如下:
竖屏,选择横向自适应即可。
- 如果单元格中用到了html元素,需要html解析显示的话,在单元格属性那块,显示内容选择“用html显示内容”,如下:
- 图表如果想自定义显示颜色的话,可以通过在条件显示中进行设置,如下:
- 如果进行图表或者报表块之间联动,在交互属性-超级链接中设置即可,如下:
- 图表显示标签可以自定义,注意:这个在新特性图表中才有,如下:
- 对单元格根据不同的条件进行特定显示,右击单元格,条件属性,进行设置即可,当前单元格的值表示为$$$ ,如下:
- 帆软报表中的函数,右击单元格,插入公式,就可以看到报表中的函数并附带函数的说明,很方便
- 复杂的列表通过灵活的设置左父格一般都能搞定。
- 数据集有时候查询的数据来自不同的表,并且字段的处理也不尽相同的话,可以每个数据集单独设置,然后通过关联数据集,根据不同的条件关联上就可以了,例如:
- 数据集中也可以使用存储过程,详细使用可以参考帆软帮助文档:存储过程-http://help.finereport.com/doc-view-117.html
- 报表填报可以设置数据校验规则,不满足就不会提交,如下:
- 根据不同的条件显示不同的图片,可以通过下面的公式进行设置:
if(A6 != null, TOIMAGE("WEB-INF/reportlets/24px_liang.png"), TOIMAGE("WEB-INF/reportlets/24px_an.png"))
详细说明可参考:单元格显示图片(Toimage函数)-http://help.finereport.com/doc-view-854.html
- 打开对话框可以采用帆软自带的,也可以使用window.open,如下:
- 帆软自带
- Window.open
- 表单
不同于普通报表设计,表单设计拥有很多普通报表设计无法企及的优势,如下:
整体性:普通报表是一个整体,无法实现局部刷新,表单是由各个组件组成,可以实现组件内刷新,即局部刷新;
控件:普通报表实现参数查询,只能将控件添加到参数面板中,表单不仅可以在参数面板中添加控件,同时还可以单独使用控件,实现数据的过滤;
联动:普通报表中单元格或图表无法直接与单元格实现联动,表单却可以实现报表块或图表块与报表块的联动。
- 部署,可以单独部署,也可以和项目集成,具体的参考文档部署集成-http://help.finereport.com/doc-view-434.html
- app不支持tab布局,但是可以通过h5解析显示tab布局表单支持html5方式解析
- url传递中文乱码解决方案
通过url给参数赋值一般应用在报表已经集成到项目中,希望点击某个链接将某个值传递给报表;而在浏览器中直接给参数赋值呢,一般是做测试使用的,此时可以将浏览器换成火狐或者谷歌。
集成到项目中,可以使用FR.cjkEncode()方法,如点击某个链接给col赋值为地区,此时可以使用如下方法:
window.location="http://localhost:8075/WebReport/ReportServer?reportlet=doc/Parameter/DynamicCol/DynamicCol.cpt&col="+FR.cjkEncode("中文名称")
在页面的js中如果使用帆软找不到FR.cjkEncode()方法的,那么需要自己定义一个方法,如下:
$(#reportFrame).attr(src, cjkEncode(urlSrc));
function cjkEncode(text) {
if (text == null) {
return "";
}
var newText = "";
for ( var i = 0; i < text.length; i++) {
var code = text.charCodeAt(i);
if (code >= 128 || code == 91 || code == 93) { //91 is "[", 93 is "]".
newText += "[" + code.toString(16) + "]";
} else {
newText += text.charAt(i);
}
}
return newText;
}
- 表单导出需要安装表单导出插件,下载路径为:https://shop.finereport.com/plugin/408
现在提供表单导出插件,可以支持支持整体导出excel或者pdf还有word。
访问任意表单, 后缀加上&op=export&format=excel即可导出excel,导出的时候如果表单有参数记得把参数传递过去,参数中有中文需要通过FR.cjkEncode("中文名称") 进行编码处理,否则出现乱码
下一篇: 如何实现MySQL中的用户管理