欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

帆软报表使用总结

程序员文章站 2022-06-17 17:36:38
...
  1. 如果页面不分页,可以把页面纸张大小设置小一点,横向自适应,访问URL后增加&__bypagesize__=false 
    这样左右是自适应的,上下按实际大小显示,这种可以避免有上下滚动条时,下方有大量空白。
  2. 如果需要在移动端展示,别用悬浮图表,移动端不支持悬浮元素。
  3. 表单标题通过数据集直接获取,获取不到,可以采用两种形式获取
  1. 借助单元格

将数据集结果放到单元格中,标题公式通过引用单元格获取;

  1. 通过sql函数获取

在公式中直接通过sql函数获取,例如:sql("gsjg_xc","SELECT '测试' as name from dual ",1,1)。

有些函数,表单标题不支持!

  1. 帆软中调用外部函数

parent.window.函数名称(参数列表)

  1. 帆软报表弹出对话框没有出现横向滚动条,解决方案是

Body布局改为绝对布局,固定大小

  1. 获取数据集记录数

ROWCOUNT("ds1"),ds1为数据集名称

  1. 表单中获取表单参数控件中的参数的值并修改

var state=_g().parameterEl.getWidgetByName("a");

     state.setValue(1);

  1. 我们在使用表单的时候,有时候可能想实现点击某按钮,隐藏某个报表块或者图表块,那么在按钮中添加点击事件,js如下:
    var Widget = this.options.form.getWidgetByName('report0');
    Widget.invisible();

如果要显示:Widget.visible();

  1. 手机端展示cpt要采用h5展示的话,需要在分页预览下才可以,路径后面加上op=h5_page这样在手机上看的话会根据手机浏览器的高度全屏进行分页,如果不想分页采用滑动的形式查看的话,再加上_bypagesize_=false使其不分页预览

,如果想横向不出现滚动条自适应显示的话,需要将单元格的内容控制在上方的标尺刻度为430范围内(适应大部分的手机)即可自适应屏幕显示,不出现滚动条。

  1. 填报导入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中就一条数据,就会有问题,标题会当成一条记录导入

  1. 排序

排序既可以对数字也可以对汉字进行排序,但是为空数据不能参与排序,如果有空的话就会报错

  1. 如果排序需要加上序号的话,序号可以这样设置,如下:

帆软报表使用总结

选中序号列,右击条件属性,设置新值

帆软报表使用总结

然后设置分页:

帆软报表使用总结

  1. 排序

例如对监测值进行排序,右击监测值标题,选择超链接,选择动态参数

  1. 升序

帆软报表使用总结

注:参数a的值需选择公式,而参数asc和desc的值不可以选择公式,只能是字符串。参数a的意义在于,点击一次超级链接就替换一次a的值,那么在下面进行排序就可以根据a的值来决定是升序还是降序。

  1. 降序

帆软报表使用总结

  1. 对第一个数据列设置排序公式,输入公式if($a==1,eval($asc),eval($desc))

帆软报表使用总结

这样就可以实现排序啦。

  1. 给参数下拉框赋值为公式的话,以年为例子,如下:

SPLIT(RANGE(TOINTEGER(format(now(),'yyyy')),2012,-1),',')

帆软报表使用总结

结果为

帆软报表使用总结

  1. 帆软报表点击图表,图表外框颜色为黑色,去掉黑色显示的办法如下:

在报表加载结束事件中添加:

_g().curLGP.hideSelectFrame();  

即可。

  1. 报表与微信企业号集成,自适应的话需要加上&op=h5参数。
  2. 报表中图表自定义最大值,采用公式定义,如果联动的话,最大值并不会改变,因为公式是在页面生成时就运行结束了,不会再变化的 
  3. 数据集中用到参数,可以使用公式进行判断,例如:

Select  * from test  where 1=1

${

If(param1==””,””,” and a=’”+param1+”’”)

}

  1. 模板自适应设置,如果自己设置了自适应属性,将“使用全局配置”复选框去掉。
  2. 在手机端显示的表单,有时候自适应右边会有多余的空白,解决方案如下:

帆软报表使用总结

竖屏,选择横向自适应即可。

  1. 如果单元格中用到了html元素,需要html解析显示的话,在单元格属性那块,显示内容选择“用html显示内容”,如下:

帆软报表使用总结

  1. 图表如果想自定义显示颜色的话,可以通过在条件显示中进行设置,如下:

帆软报表使用总结

  1. 如果进行图表或者报表块之间联动,在交互属性-超级链接中设置即可,如下:

帆软报表使用总结

  1. 图表显示标签可以自定义,注意:这个在新特性图表中才有,如下:

帆软报表使用总结

  1. 对单元格根据不同的条件进行特定显示,右击单元格,条件属性,进行设置即可,当前单元格的值表示为$$$ ,如下:

帆软报表使用总结

  1. 帆软报表中的函数,右击单元格,插入公式,就可以看到报表中的函数并附带函数的说明,很方便

帆软报表使用总结

  1. 复杂的列表通过灵活的设置左父格一般都能搞定。
  2. 数据集有时候查询的数据来自不同的表,并且字段的处理也不尽相同的话,可以每个数据集单独设置,然后通过关联数据集,根据不同的条件关联上就可以了,例如:

帆软报表使用总结

  1. 数据集中也可以使用存储过程,详细使用可以参考帆软帮助文档:存储过程-http://help.finereport.com/doc-view-117.html
  2. 报表填报可以设置数据校验规则,不满足就不会提交,如下:

帆软报表使用总结

  1. 根据不同的条件显示不同的图片,可以通过下面的公式进行设置:

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

  1. 打开对话框可以采用帆软自带的,也可以使用window.open,如下:
  1. 帆软自带

帆软报表使用总结

  1. Window.open

帆软报表使用总结

  1. 表单

不同于普通报表设计,表单设计拥有很多普通报表设计无法企及的优势,如下:

整体性普通报表是一个整体,无法实现局部刷新,表单是由各个组件组成,可以实现组件内刷新,即局部刷新;

控件普通报表实现参数查询,只能将控件添加到参数面板中,表单不仅可以在参数面板中添加控件,同时还可以单独使用控件,实现数据的过滤;

联动普通报表中单元格或图表无法直接与单元格实现联动,表单却可以实现报表块或图表块与报表块的联动。

  1. 部署,可以单独部署,也可以和项目集成,具体的参考文档部署集成-http://help.finereport.com/doc-view-434.html
  2. app不支持tab布局,但是可以通过h5解析显示tab布局表单支持html5方式解析
  3. 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;
	}
  1. 表单导出需要安装表单导出插件,下载路径为:https://shop.finereport.com/plugin/408

现在提供表单导出插件,可以支持支持整体导出excel或者pdf还有word。

访问任意表单, 后缀加上&op=export&format=excel即可导出excel,导出的时候如果表单有参数记得把参数传递过去,参数中有中文需要通过FR.cjkEncode("中文名称")  进行编码处理,否则出现乱码

帆软报表使用总结