润乾报表与帆软报表产品对比

润乾报表与帆软报表产品对比
润乾报表与帆软报表产品对比

润乾报表与帆软报表产品对比

目录 (2)

前言 (3)

第一章报表设计 (3)

1.1对EXCEL的支持 (3)

1.1.1设计器打开Excel文件 (3)

1.1.2对Excel的公式支持 (4)

1.1.3复制粘贴Excel的内容 (4)

1.2制作报表 (4)

1.3制作统计图 (7)

1.4远程设计 (8)

第二章功能性 (9)

2.1中国式复杂报表 (9)

2.2.1多源分片 (9)

2.2.2动态格间运算 (10)

2.2.3行列对称 (10)

2.2.4不规则分组 (11)

2.2数据源 (11)

2.3主子表 (12)

2.4行类型 (13)

2.5折叠报表 (13)

2.6统计图 (16)

2.7超链接 (16)

2.8参数与宏 (17)

第三章集成性 (18)

3.1WEB应用集成 (18)

3.2API接口 (19)

3.3自定义数据接口 (19)

3.4移动端展现 (19)

第四章性能与容量 (21)

4.1多源关联 (21)

4.2容量 (21)

4.3响应 (22)

4.4并发 (22)

第五章美观性 (23)

4.1设计器UI (23)

4.2统计图 (24)

第六章总结 (25)

多年以来,我们经常被客户询问关于润乾报表与帆软报表的不同之处,对此我们的态度一直是避而不谈,因为从心底里不愿意去做这样的对比,我们坚信“你若盛开,清风自来”,也一直在秉行只说自己好,不去评判竞争者好坏的商业原则。如果客户在面对选型时有所纠结,我们都是建议客户自己去对比选择并积极配合。但是现在这样的客户反馈越来越多,而且确实有许多客户对报表工具不熟悉,不知道在选型时该对比哪些内容。另外,市场上长期以来充斥着一些倾向性非常明显、内容却很片面且与实际不符的对比材料,其编造者也不敢署名,这些错误的材料误导了客户对报表市场的感知能力。因此,不管是客户需求,还是市场需要,还是自我澄清,我们现在都有必要做个回应。下面对两种产品进行了详细测评,并整理汇总出文档供业界参考。我们力求做到客观公正,但由于对友商的产品不是非常熟悉(我们的精力更多的是研究客户需求,而不是竞争者),因此难免有错,敬请广大业内人士指正,特别是敬请友商指正。

润乾报表和帆软报表都是国内知名的报表解决方案供应商,两者的共同特点都是类Excel的纯Java的Web报表工具,但在技术细节和发展方向上存在差异。

本文主要考察这两款报表工具在制作固定报表时的差异。固定报表是指由报表开发人员预先定义好报表样式、取数规则、查询条件、业务逻辑等,报表的使用人员仅在Web端进行报表的查看,不涉及报表结构的修改。固定报表是业务系统中最常用的、开发工作量最大的任务,其制作方便性及能力对项目开发周期有很大的影响。另外,由于固定报表主要是在应用程序中使用,其集成性也是非常重要。本文将对这些方面进行客观的测评。

第一章报表设计

1.1对EXCEL的支持

既然润乾和帆软都是类Excel的设计模型,那么我们先来看看二者对Excel 的支持情况。对Excel的支持从以下几方面进行:

1.1.1设计器打开Excel文件

在设计器中可以直接打开Excel画好的表样,无疑可以减少重复绘制表格的工作量,润乾和帆软都可以在设计器中直接打开Excel文件,但是润乾报表打开的Excel看起来跟原始Excel字号略有差异,这是因为微软跟JAVA的标准不一致造成的,但是再导出成Excel字号还是一样的;帆软不支持表格中文字右对齐,需要在设计器中手动调整对齐方式才能跟Excel保持一致。其余属性,例如字体,前景色,背景色解析的无差别。

1.1.2对Excel的公式支持

对于常用的公式,例如求和、求平均值、最大值和最小值、获取当前日期。润乾报表都不支持Excel的用法,需要简单修改函数参数,符合润乾的语法才可以;帆软无需修改函数全部支持。

1.1.3复制粘贴Excel的内容

从Excel中复制任意一片区域,粘贴后润乾报表和帆软报表都可以原样展现在设计器表格中,无差别。

1.2制作报表

报表工具的主要作用就是制作报表,刚才也提到润乾和帆软都采用类Excel 的设计模式,下面主要测评一下润乾和帆软的制表过程和难易程度。

润乾报表

制作报表的第一步就是数据连接,润乾报表支持JDBC,ODBC以及JNDI三种数据连接方式。常用的关系型数据库都支持用JDBC方式连接,用法也简单,只需要把相关jar包放在指定目录下,选择相应的驱动,配置URL和用户名、密码即可;而ODBC方式则需要在系统的ODBC数据源管理中先进行配置,再通过设计器的ODBC数据源界面选择匹配即可;而JNDI数据源则需要在配置文件中设置JNDI前缀与相应要连接的数据源JNDI名字相同即可。

有三种制表方式:第一种报表的制作方式最简便,可以由向导引导完成,包括从数据集制作到列表、分组、交叉三类报表的取数、展现,全程根据向导引导完成;其次,如果对润乾的语法等比较熟悉,可以抛开向导,用拖拽字段到指定单元格的方式制作报表,这个时候可以制作出的表样就不仅仅局限于三类报表而制作出更多更复杂的报表;第三种方式比较适用于开发人员,抛开一切辅助手段,

手动输入表达式及各中参数,这种方式可以将每个表达式的设计功能发挥到极致。制作报表过程中,鼠标放在每个单元格上,设计器最下面一栏会显示该单元格的所有属性,并且在调试报表阶段,可以从设计器的控制台查看报表运行时的日志,对调试复杂报表的表达式写法有很大的帮助,如下图:

报表制作完成后,润乾报表提供了“添加到样式”的功能,类似于Excel的格式刷的功能,可以有效减少统一单元格之间样式一致性的重复性工作,如下图:

润乾报表支持在设计器中预览报表并输出为Excel、Word等常用格式文档,

不是一定要在Web端预览后才能输出报表,如下图:

帆软报表

对于数据连接,帆软报表支持JDBC方式和JNDI两种连接方式。用法也比较简单,配置驱动,URL以及用户名、密码即可。但是帆软报表支持在数据源连接界面直接设置数据库连接池的相关属性,无需再去配置文件中设置,这点比较方便。

有两种做表方式:第一种方式是通过字段拖拽到指定单元格的方式制作报表,但是支持字段的批量拖拽,可以选择批量选中的字段的布局方式,函数所涉及的所有功能都可以通过点选的方式启用,但拖拽到单元格中的表达式就不支持手动更改相关参数选项;第二种方式是手动输入表达式,完成函数嵌套等一些复杂用法。

帆软报表从报表模板中很难看出报表的制作过程,不能一眼看明白每个单元格设置了哪些属性,在报表调试过程中,没有明细日志,对于报表开发人员来说函数和调试过程完全是封装起来的,不知道具体执行过程,调试时就麻烦许多。

帆软报表在报表制作完成后的报表美化过程也提供了“样式”属性并且自带了样式库,而且样式多种多样,不过真正想用这个库里的样式,一定要仔细认真,

不然容易选错,因为太多了,而且挨得比较近。如图:

帆软报表不提供在设计器预览报表的功能,只能以分页模式、填报模式或分析模式在Web端预览及输出报表。

1.3制作统计图

润乾报表中可以选择自带的统计图或第三方图形两种方式。双击单元格中统计图,弹出统计图相关属性定义面板,点击确定后即可预览到相应效果。而添加第三方图形,则需要写相关JavaScript代码完成第三方统计图调用,用法没有自带统计图简单,但展现效果更炫。

帆软报表支持自带的图表和集成第三方图表两种方式,单击图表,右侧即可设置图表相关属性,包括数据来源、图表交互、热点链接等功能,有点扁平化设计的影子。至于展现效果,要比润乾自带的统计图炫酷。如果用第三方图表,要

写自定义类,用法复杂。

1.4远程设计

润乾报表不直接支持远程设计报表,因为产品的定位是中间件,不能假定用户应用后台资源的权限和管理规则,甚至不能假定一定有后台,不适合提供这种能力。润乾开放了设计器的API接口,有需要的话可以根据实际需求自行开发,不过开发起来确实不是很简单。

帆软报表采用了三层架构技术,而且本身有完整的报表管理功能,这样就可以让用户通过远程设计模式,在本地设计远程发布模板,并直接对服务器端报表文件编辑更改。多个报表制作人员可通过远程设计器连接到同一个报表运行环境,达到多人协同办公的目的。不过,管理后台只能使用产品中固化的资源权限管理规则,项目组开发时问题不大,但实际上线系统中用于维护报表的可行性不高。

第二章功能性

2.1中国式复杂报表

中国式复杂报表的特点是:格式复杂、信息量大、计算麻烦。润乾首先提出了非线性报表数学模型用于解决中国式复杂报表,帆软随后跟进也采用了这一模型。下面从几方面看一下两款产品对非线性报表模型的支持情况。

2.2.1多源分片

两款报表工具都能很好地支持多数据源。

润乾报表可以通过可控性极强的函数完成横向分片,纵向分片,多片变动、动静结合以及跟随主记录自行扩展重复的明细表。

帆软报表也可以实现多源关联分片,但当横向数据较多,web端不支持以浏览的模式在一页展示,只能以填报模式或分析模式在一页浏览。

2.2.2动态格间运算

润乾报表对于运算后报表数据项有很好的命名机制,可以精确描述数据引用关系,同时,单元格层次做表与相关格集,可以对扩展后的每个单元格或格集进行精确命名,从而对占比、累计、同期比、环比、按条件汇总、排名、组内序号、组间序号等复杂问题可以轻松实现。

帆软报表基于格子界面中数据扩展的特性,即设计界面与返回数据一对多的关系,提供了一整套运算体系,用于扩展后数据的定位与相互引用计算,可以实现占比、同期比、环比、排名、组内序号、组间序号等。

润乾报表和帆软报表在这一点,不管是数学模型,调用方法还是实现的功能几乎一样,没有太大差别。

2.2.3行列对称

润乾报表具有天然行列对称特性,行方向拥有的数据扩展能力在列方向也都有,所有报表均在统一的处理模型下完成。

帆软报表列方向能力弱于行方向,稍微复杂点的交叉表无法实现,只能使用子表。例如:有两片分组层数不同的变列区域和几个固定的计算列混合的报表。

2.2.4不规则分组

润乾报表支持的不规则分组类型有:按段分组:类似于价格区间、年龄区间这种可以穷举出来分组规律的;归并分组:类似于某些产品可能不属于既定的任何一种归类而被归入其他类的;重叠分组:分组后,又需要对该组中重点客户单独分组汇总的。这三种常用的不规则分组,只需要调用相应函数就可以实现,很方便。

帆软报表支持的不规则分组类型有:按段分组:类似于价格区间、年龄区间这种可以列举出来分组规律的;相邻连续分组:数据库表数据是按照时间先后录入的,查询的时候希望按照时间先后,某个字段连续相同的话就合并起来显示;归并分组:类似于某些产品可能不属于既定的任何一种归类而被归入其他类的。帆软不支持重叠分组,但是提出了另一个不规则分组-相邻连续分组。

2.2数据源

润乾报表直接支持多种数据来源,包括传统的关系型数据库,文本数据集、内建数据集、和Java自定义数据集等。接上润乾集算器后还可以支持更多的数据源,如json/XML、HDFS/Hive/HBase、MongoDB,HTTP、Redis、阿里云等。

帆软报表支持的数据源包括关系型数据库、文本数据源、多维数据库、NoSQL 数据库、json数据源、SAP数据源以及程序数据源。

2.3主子表

润乾报表支持单表式、引入式和嵌入式三种方式的子报表,并且支持不限嵌套层数的子报表。由于嵌入式子表是将子表缩放到主表某单元格的大小,当子表很大时,嵌入到主表可能会出现显示不全或被缩放的很小的情况,这种情况适用于引入式子表,不用主表单元格大小限制子表的大小。

帆软报表支持单表式和嵌入式两种方式的子报表。值得一提的是帆软的聚合报表,类似主子表,但除了可以添加子表,还可以添加统计图,多个子表之间的扩展不相互影响,应该可以解决嵌入式子表的问题。

2.4行类型

润乾报表的行类型分的很细,有分页页眉、头标题、报表头、分组表头、数据区、报表尾、尾标题、分页页脚,设置好行类型,就可以实现web页面固定表头,分页后表头重复等功能,很方便。

帆软报表的行类型只有页眉和页脚可以设置,如果要在页面固定表头或分页表头重复需要选中相应行单独设置。

2.5折叠报表

润乾报表支持树形折叠报表和OLAP折叠报表两种,且用法简单,只添加一

个标签无需报表做过多设置。

帆软报表支持折叠树和行列双方向的折叠树,制作折叠树报表,首先要单独新建树数据集,需要在数据集中包含父节点和子节点同时还要添加条件属性,将空数据隐藏,否则折叠树会不规则。至于双方向折叠树用法更麻烦,需要自己写JavaScript方法实现。

2.6统计图

润乾报表支持自带统计图和第三方统计图两种方式,提供了多一种的选择空间。自带的统计图类型主要是常规图表,例如:饼图、柱图、线图、雷达图、甘特图、工字图、时间走势图等,其他类型统计图可以用第三方统计图插件实现,例如气泡图、股票图、词云等。同时,润乾自带的统计图支持统计图标题、系列标题等的动态变化,即标题中可以接收参数。

从文档和宣传材料上看,帆软报表看起来仅支持自主研发的统计图。自带的统计图除了支持常规饼图、柱图、线图、雷达图、甘特图、工字图、时间走势图以外,还支持散点图、圆环图、气泡图、地图、GIS地图、树图等统计图类型。并且在交互性方面比较突出,例如自动刷新、在线切换统计图类型、数据提示、自定义标签、高亮交互、坐标轴缩放以及多个统计图之间的联动等功能,设置简便,效果炫酷。

2.7超链接

润乾报表支持通过超链接的方式给不同报表和图表之间传递参数,从而实现数据从宏观到微观的分析过程。

帆软报表支持多级超链接,一个单元格定义多个超级链接,即在报表展现时,可以同时提供多个选择供数据钻取。

2.8参数与宏

润乾报表支持普通参数和动态参数两种形式。即如果只是想通过输入不同值而查看不同结果或通过不同用户登录后查看不同结果时,使用普通参数在sql 里设置参数,在数据集或单元格里接收参数即可。当然,参数的个数可以是多个,参数的输入形式也不仅仅局限于文本框。而如果需求是想通过一个表达式去判断参数值,就要使用动态参数。用法和界线鲜明易懂。

润乾报表还支持一种特殊的参数叫宏,它是没有数据类型限制的字符串标识,宏也分普通宏和动态宏两种。同样的,普通宏的用法类似普通参数,可以被用于sql语句中或者单元格中进行宏名的原样替换宏值;而动态宏则有一个很强大而实用的功能,因为它没有数据类型限制,它可以被用在sql语句里,动态判断sql的执行范围等。

帆软报表支持将参数定义在sql语句的任意位置以达到筛选的目的,即在定义参数时,不用管参数类型,参数是静态还是动态,全部都可以在sql语句里统一处理。不用预先设置参数类型虽然方便,但用的时候却不太方便。例如要想实现最简单的参数为空时,查询全部数据的功能,就需要在sql语句里写一堆if 判断去做。写出来有点繁琐,SELECT * FROM 订单where 1=1 ${if(len(area)==0,"","and 货主地区='"+area+"'")}${if(len(province)==0,"","and 货主省份= '"+province+"'")},而用润乾报表实现同样功能的sql语句写法为:SELECT * FROM 订单 where(@area==? Or?is null) and (@province==? Or ?is null)

这里不得不说的是,帆软报表在这方面是有安全隐患的!这不是站在竞争者角度上评说,而是一个专业技术人员的态度。拼SQL串解决查询灵活性的方案,轻则可能出错(比如参数值中有引号时就会拼出不能执行的SQL,日期型常数在不同数据库下写法不同也容易导致错误),重则会被利用为SQL植入,泄露数据库中的关键信息,这一向是数据库开发人员很忌讳的地方。事实上,像润乾一样实现成SQL参数的方式并不难,我们不明白为什么帆软公司没有这么做,却在文档中到处推荐这种拼SQL串的方法。拼SQL串的方案并非不能用,润乾报表中也

提供有宏,但原则上是尽量少用,而且必须有经验的程序员很小心地使用。大量推荐使用,特别是由缺乏安全经验的报表开发人员使用,将大大增加SQL植入的风险,后果将很严重。从这一点可以看出帆软公司的程序员对企业级应用的意识比较淡薄。我们在这里提醒帆软公司,如果已经提供有SQL参数方案(我们不确定是否真地有)则立即向客户说明,并在文档中的显著位置加以提示,如果没有则立即补上并向客户发出产品召回通知,同时都要求客户修改开发方法,这才是对客户负责的态度。

2.9打印与导出

润乾报表支持三种打印方式,Applet打印、Flash打印和PDF打印。具体支持的打印的功能点包括:分页打印,缩放打印,套打,静默打印,直接打印,批量打印,保存客户端打印设置以及打印预览时是否可以修改数据等功能。

润乾报表支持除标准HTML外,以文件的方式将报表导出,支持导出的格式有:Excel,PDF,Word,RAT文件(润乾报表自有的文件格式,主要用以保存报表运算后的结果),同时开放相关API接口,允许用户继承接口自定义导出其他格式的文件。这里需要强调的一点,润乾报表支持WORD报告类报表,即可以把报表、报表中某一单元格、统计图等报表中的元素生成到word文件中,形成word 报告类报表,此功能避免了传统方法中用类Excel设计器绘制word报告时采用大量隐藏格的麻烦,效率更高,也更方便。

帆软报表支持的打印方式也是三种,Applet打印、Flash打印和PDF打印。支持的打印的功能点有:分页打印,缩放打印,套打,静默打印,偏移打印,批量打印,自动选择纸张和方向打印等。

帆软报表支持的报表导出格式包括:PDF,Word,PDF,TXT,SVG以及图片格式。同时,帆软报表支持通过API接口实现将报表导出为内置数据CPT、CSV等其他格式文件。

第三章集成性

3.1WEB应用集成

润乾报表的定位是中间件,所以集成性非常好,对于Web应用集成,只需要

引用十几个相关jar包和必要的配置文件即可,用户页面可以使用tag标签来嵌入报表,非常简单。后台服务只有报表计算的相关程序,没有其它外围内容,tag (本质上是API)方式也能确保性能和功能不损失。

帆软报表本质上是个报表应用系统,需要用URL方式把报表集成到用户页面中,也不是很麻烦。但过程需要引用的jar包和配置文件很多,还会自动启动用户资源管理等相应的服务程序,消耗服务器资源。URL方式会降低性能,且有些类型的数据无法传递。

3.2API接口

润乾报表定义了丰富的API接口,供程序员调用,从而对报表服务器进行深度完全控制。在API结构上可以分成三个层面,数据层、运算层和展现层,每个层面都有开放的接口允许程序员调用和重载。

帆软报表只开放了少量接口供程序员调用,包括数据源接口、前端展现相关接口、报表再处理接口以及自定义函数接口,无法实现一些深入的客户定制化的功能。

3.3自定义数据接口

润乾报表支持通过JAVA自定义数据源,并在报表中通过直接调用编译好的类文件的形式访问数据。

帆软报表也支持JAVA自定义数据集,调用方法也是直接调用类文件的形式。

值得一提的是,润乾新出了集算器产品,可以用于实现更复杂高效的数据源运算。润乾报表可以和集算器深度集成,获得最高性能和完整功能。当然,帆软报表也可以通过自定义数据接入集算器,不过只能使用集算器的公开接口,某些深入功能无法支持,性能也会有损失。

3.4移动端展现

润乾报表支持小流量的HTML5,统计图支持SVG等移动端输出格式,保证报表和统计图可以在移动端展现并且集成到APP中更简便,集成度更高。但由于面向集成,所以没有提供现成的APP,这需要用户方自行开发,难度不是很大。

帆软报表全线产品提供了移动端APP,展示方案采用HTML5方式,具有良好

的交互体验,但是现成的APP和用户的APP没有办法集成在一起,如果要用自己的APP,那还是WEB集成的方案,如前所述,这时就不如润乾报表轻爽简单了。

润乾报表常用函数

润乾报表常用函数 1.to函数说明:生成一组连续的整数数据 语法:to(startExp,endExp{,stepExp}) 参数说明: startExp 整数数据开始的表达式 endExp 整数数据结束的表达式 stepExp 整数数据步长的表达式 函数示例: to(1,5)=list(1,2,3,4,5) to(1,5,2)=list(1,3,5) to(-5,-10,-2)=list(-5,-7,-9) to(-10,-8)=list(-10,-9,-8) 2.select函数说明:从数据集的当前行集中选取符合条件的记录 语法: datasetName.select( {, desc_exp{, filter_exp{, sort_exp{,rootGroupExp}}}} ) datasetName.select( , , )//适用于不需排序或数据集中已排好序 参数说明: select_exp:要选择的字段列名/列号,,也可以是表达式。列号用#n 表示,例如#0代表第0列,#1代表第1列,依此类推 desc_exp: 指定数据排序的顺序,true表示降序排列,false表示升序排列。 filter_exp: 数据过滤表达式,如果全部选出,则此参数省略,仅用“,”占位。

sort_exp: 数据排序表达式。当此项为空时先检查desc_exp是否为空,如果为空,则不排序,否则使用select_exp排序。rootGroupExp 是否root数据集表达式 返回值:一组数据的集合,数据类型由select_exp的运算结果决定函数示例: 例1:ds1.select( name ) 从数据源ds1中选取name字段列的所有值, 不排序 例2:ds1.select( #2, true ) 从数据源ds1中选取第二个字段列的所有值并降序排列 例3:ds1.select( name,false,sex=='1') 从数据源ds1中选取性别为男性的name字段列的值并升序排列 例4:ds1.select( name, true, sex=='1', id ) 从数据源ds1中选取性别为男性的name字段列的值并按id字段降序排列 3.Int函数说明:将字符串或数字转换成整数 语法:int( string ) int( number ) 参数说明: string 需要转换的字符串表达式 number 数字,如果带有小数位,转换后小数位被截掉

润乾报表与帆软报表产品对比

润乾报表与帆软报表产品对比

目录 (2) 前言 (3) 第一章报表设计 (3) 1.1对EXCEL的支持 (3) 1.1.1设计器打开Excel文件 (3) 1.1.2对Excel的公式支持 (4) 1.1.3复制粘贴Excel的内容 (4) 1.2制作报表 (4) 1.3制作统计图 (7) 1.4远程设计 (8) 第二章功能性 (9) 2.1中国式复杂报表 (9) 2.2.1多源分片 (9) 2.2.2动态格间运算 (10) 2.2.3行列对称 (10) 2.2.4不规则分组 (11) 2.2数据源 (11) 2.3主子表 (12) 2.4行类型 (13) 2.5折叠报表 (13) 2.6统计图 (16) 2.7超链接 (16) 2.8参数与宏 (17) 第三章集成性 (18) 3.1WEB应用集成 (18) 3.2API接口 (19) 3.3自定义数据接口 (19) 3.4移动端展现 (19) 第四章性能与容量 (21) 4.1多源关联 (21) 4.2容量 (21) 4.3响应 (22) 4.4并发 (22) 第五章美观性 (23) 4.1设计器UI (23) 4.2统计图 (24) 第六章总结 (25)

多年以来,我们经常被客户询问关于润乾报表与帆软报表的不同之处,对此我们的态度一直是避而不谈,因为从心底里不愿意去做这样的对比,我们坚信“你若盛开,清风自来”,也一直在秉行只说自己好,不去评判竞争者好坏的商业原则。如果客户在面对选型时有所纠结,我们都是建议客户自己去对比选择并积极配合。但是现在这样的客户反馈越来越多,而且确实有许多客户对报表工具不熟悉,不知道在选型时该对比哪些内容。另外,市场上长期以来充斥着一些倾向性非常明显、内容却很片面且与实际不符的对比材料,其编造者也不敢署名,这些错误的材料误导了客户对报表市场的感知能力。因此,不管是客户需求,还是市场需要,还是自我澄清,我们现在都有必要做个回应。下面对两种产品进行了详细测评,并整理汇总出文档供业界参考。我们力求做到客观公正,但由于对友商的产品不是非常熟悉(我们的精力更多的是研究客户需求,而不是竞争者),因此难免有错,敬请广大业内人士指正,特别是敬请友商指正。 润乾报表和帆软报表都是国内知名的报表解决方案供应商,两者的共同特点都是类Excel的纯Java的Web报表工具,但在技术细节和发展方向上存在差异。 本文主要考察这两款报表工具在制作固定报表时的差异。固定报表是指由报表开发人员预先定义好报表样式、取数规则、查询条件、业务逻辑等,报表的使用人员仅在Web端进行报表的查看,不涉及报表结构的修改。固定报表是业务系统中最常用的、开发工作量最大的任务,其制作方便性及能力对项目开发周期有很大的影响。另外,由于固定报表主要是在应用程序中使用,其集成性也是非常重要。本文将对这些方面进行客观的测评。 第一章报表设计 1.1对EXCEL的支持 既然润乾和帆软都是类Excel的设计模型,那么我们先来看看二者对Excel 的支持情况。对Excel的支持从以下几方面进行: 1.1.1设计器打开Excel文件

润乾报表常用函数

润乾常用函数数值计算 函数说明:abs(numberExp) 计算参数的绝对值 语法: abs(numberExp) 参数说明: numberExp 待计算绝对值的数据 返回值: 数值型 示例: 例1:abs(-3245.54) 返回:3245.54 例2:abs(-987) 返回:987 函数说明:cos(numberExp) 计算参数的余弦值,其中参数以弧度为单位 相关的函数有sin() 计算参数的正弦值 tan() 计算参数的正切值 语法: cos(numberExp) 参数说明: numberExp 待计算余弦值的弧度数 返回值:double型 示例: 例1:cos(pi()) 返回:-1 例2:cos(pi(2)) 返回:1

函数说明:eval( StringExp ) 动态解析并计算表达式 语法: eval( StringExp ) eval( StringExp, SubRptExp ) eval( StringExp, DataSetExp ) 参数说明: StringExp 待计算的表达式串 SubRptExp 嵌入式子报表对象,一般是含有子报表的单元格 DataSetExp 数据集对象,一般是ds函数 返回值:表达式的结果值,数据类型由表达式决定 示例: 例1:eval( "1+5" ) 返回6 例2:eval("B2+10", A1) 其中A1为嵌入式子报表,表示计算A1子报表中的B2+10 例3:eval("salary+100", ds("ds1")) 表示计算数据集ds1中salary加100 函数说明:exp(nExp) 计算e的n次幂 语法: exp(nExp) 参数说明: nExp 指定次幂数 返回值:数值型 示例: 例1:exp(4.3) 返回:73.69979369959579 函数说明:fact(nExp) 计算参数的阶乘 语法: fact(nExp)

润乾集算报表实现动态层次钻取报表(一)

润乾集算报表实现动态层次钻取报表(一) 在报表项目中有时会有动态层次报表,而且还需要层次钻取的场景,开发难度较大。这里记录了使润乾集算报表开发《各级部门KPI报表》的过程。 《各级部门KPI报表》初始状态如下图: 当前节点是根节点“河北省”,要求报表显示当前节点的下一级节点“地市”汇总的KPI 数值。Kpi又分为普通指标和VIP指标两类,共四项。如果点击“石家庄”来钻取的时候,要求能够将石家庄下一级的KPI汇总指标显示出来,如下图: 点击“中心区”钻取,要求能够将下一级的KPI汇总指标显示出来,以此类推,直到显示到最后一级。如下图: 前四级固定是“省、地市、区县、营业部”,后边则是动态的“架构4、架构5、架构6. . . 架构13”(根节点“省”对应“架构0”)。 这个报表对应的oracle数据库表有两个,tree(树形结构维表)和kpi(指标事实表),如下图:

Tree表 Kpi表 Tree表的叶子节点,通过id字段与kpi表关联。这个报表的难点在于1、动态的多层数据、标题;2、树形结构数据与事实表关联。 采用润乾集算报表实现的第一步:编写集算脚本tree.dfx,完成源数据计算。集算脚本 A1:连接预先配置好的oracle数据库。 A2:新建一个序列,内容是“省、地市、区县、营业部、架构4、架构5、架构6. . . 架构13”。 A3:使用oracle数据库提供的connect by语句编写sql,从数据库中取出指定id(节点编号)

的所有父节点id、name。id是预先定义的网格参数,如果传进来的值是104020,那么A3的计算结果是: A4:为A3增加一个字段title,按照顺序,对应A2中的层级。结果是: A5:计算变量level,是A3序表的长度,也就是输入节点“104020”的层级号“4”(“省”为第一级)。 A6:计算输入节点“104020”的下一级对应的层级名称“架构4”,赋值给变量xtitle。 A7:编写sql,从tree表中取出输入节点“104020”的所有叶子节点,并拆分sys_connect_by_path字符串,得到这些叶子节点对应的输入节点“104020”的下一级节点。形成临时表leaf与kpi表关联分组汇总。为了能够得到输入节点“104020”的下一级节点的name,leaf还需要与tree关联一次。需要注意的是,如果输入节点号本身就是叶子节点,结果中的name将为空。完整的sql如下: with leaf as( SELECT tree.id id,REGEXP_SUBSTR(SYS_CONNECT_BY_PATH(id, ';'),'[^;]+',1,2) x FROM tree where connect_by_isleaf=1 START WITH ID = ? CONNECT BY NOCYCLE PRIOR id = pid ) select nvl(leaf.x,max(leaf.id)) id,'"+xtitle+"' title,max(https://www.360docs.net/doc/078702998.html,) name, sum(kpi.kpi1) kpi1,sum(kpi.kpi2) kpi2,sum(kpi.vipkpi1) vipkpi1,sum(kpi.vipkpi2) vipkpi2 from leaf left join kpi on leaf.id = kpi.id left join tree on leaf.x=tree.id group by leaf.x order by leaf.x 计算的结果是: A8:关闭数据库连接。 A9:向报表返回A4、A7两个结果集。 第二步:在报表设计器中定义报表参数和集算数据集,调用tree.dfx。如下图:

总结了润乾报表的查询标签属性

1)raq:部署到通用查询应用中的报表的名称,为必须项,格式要符合文件名或变量名规则通用查询面板的布局方式。 2)srcType:报表源的类型,默认值为file。 3)needSave:是否生成通用查询页面上的保存按钮,即保存当前查询设置的保存按钮,默认值是yes。 4)needReload:是否生成通用查询页面上的载入已定义按钮,即载入已有的查询条件设置的按钮,默认值是yes。 5)needQuery:是否生成通用查询页面下方提交查询设置的查询按钮,默认值是yes。 6)conditions:设置可见的预置条件,预置条件为预先设置查询条件作为默认查询条件。预置条件的固定设置格式为:数据集名称,(,字段名称,比较符,条件值1,条件值2,),逻辑符; 一个预置条件必须含有八项(其中括号”()”算一项且必须),包括:数据集名称、左括号、所选的字段名称、比较符(参见比较符对应表)、条件值1、条件值2、右括号、逻辑符(or或and);其中两个条件值是针对选择”在……之间”这种类型的比较符,若选择的是只需一个条件值的比较符,那么只设置条件值1,条件值2为空即可。 7)hiddenConditions:将预先设置的查询条件隐藏,这样进入通用查询页面时,预置条件不显示,在提交查询条件时,与用户设置的查询条件一同传入报表。不可见预置条件的设置方法与规则同可见预置条件的一致。 8)dataSets:生成通用查询面板所使用的数据集列表,设置报表模板中的数据集,设置格式为半角逗号分割的列表。 9)macroNames:若设计的报表模板含有宏,则在这个标签处设置报表中的宏,此处宏名称的列表要与数据集名称一一对应。 10)fieldColWidth:设置通用查询字段列表的宽度,格式是像素值,或者百分比。 11)setupIcon:”高级设置”功能键对应的图标路径,格式可以是绝对或相对URL地址。 12)multiIcon:”横向布局”功能键对应的图片路径,格式可以是绝对或相对URL地址。 13)saveIcon:”保存”功能键对应的图标路径,格式可以是绝对或相对URL地址。 14)reloadIcon:”载入已定义”功能键对应的图标路径,格式可以是绝对或相对URL 地址。 15)calIcon:”日历编辑风格”对应的图标路径,格式可以是绝对或相对URL地址。

(完整版)润乾报表使用手册

报表使用手册 报表使用手册 XX股份有限公司 中国济南

目录 1概述.............................................................................................................................. - 3 - 2安装.............................................................................................................................. - 3 - 2.1准备好安装程序.......................................................................................... - 3 - 2.2安装中的选项.............................................................................................. - 3 - 2.3授权文件配置.............................................................................................. - 4 - 3报表制作...................................................................................................................... - 5 - 3.1报表制作要求.............................................................................................. - 5 - 3.2制作一张报表的步骤.................................................................................. - 5 - 3.3启动报表设计器.......................................................................................... - 6 - 3.4连接数据源.................................................................................................. - 7 - 3.4.1 数据源对话框......................................................................................... - 7 - 3.4.2 编辑数据源............................................................................................. - 7 - 3.4.3 注意事项................................................................................................. - 9 - 3.5设计报表格式.............................................................................................. - 9 - 3.5.1 格式设计................................................................................................. - 9 - 3.5.2 需注意事项........................................................................................... - 10 - 3.6定义参数.................................................................................................... - 10 - 3.6.1 参数的编辑........................................................................................... - 10 - 3.6.2 常用参数举例....................................................................................... - 11 - 3.7定义宏........................................................................................................ - 11 - 3.7.1 宏的编辑............................................................................................... - 11 - 3.7.2 常用宏举例........................................................................................... - 12 - 3.8建立数据集................................................................................................ - 12 - 3.8.1 数据集的编辑....................................................................................... - 12 - 3.8.2 常用数据集举例................................................................................... - 13 - 3.9设置单元格属性........................................................................................ - 14 - 3.9.1 数据集在单元格中应用....................................................................... - 14 - 3.9.2 显示格式............................................................................................... - 14 - 3.9.3 设置预警条件....................................................................................... - 15 - 3.9.4 增加动态背景色................................................................................... - 15 - 3.9.5 按参数隐藏列....................................................................................... - 16 - 3.9.6 主格应用............................................................................................... - 16 - 3.10报表预览.................................................................................................... - 17 - 3.11报表发布.................................................................................................... - 17 - 4报表部署.................................................................................................................... - 18 - 4.1部署位置.................................................................................................... - 18 - 4.2Web中显示................................................................................................ - 18 - 5重要概念.................................................................................................................... - 19 - 5.1数据源........................................................................................................ - 19 - 5.2数据集........................................................................................................ - 19 - 5.3参数............................................................................................................ - 19 - 5.4宏定义........................................................................................................ - 22 -

润乾集算报表呈现输出之票据套打

润乾集算报表呈现输出之票据套打 实际项目开发中,很多情况会用到票据的打印。即在一张印刷好的空白票据上,准确无误地打印上票据的内容。用传统的报表工具,我们通常会用尺子量每一个数据区域的位置,然后在屏幕上根据尺子量出的尺寸设计每个格子的位置,反复调试。这样制作一张票据打印的报表费时费力,而且一旦票据格式发生变化,报表制作人员又要重新制作报表。 集算报表采用底图描绘的方案解决套打时的报表绘制问题。将需要套打的票据扫描成图片,插入到报表设计的界面上,然后依照底图进行报表描绘,可保证每一个单元格都和单据上的数据区域严格对齐。这样设计出来的报表,打印到空白票据上,不会产生错位。 具体操作如下: 准备扫描空白票据,使用扫描仪,注意要设置像素单位,使得其和标准纸张大小一样,或者扫描之后用画图软件将图片压缩成标准纸张大小,扫描分辨率一般使用72dpi。得到空白票据图片如下图。请注意发票名称、表格线、表格中的各个标题都是空白发票已经印刷好的,报表需要填写生成的是空白部分。 使用集算报表设计器新建空白报表,并插入背景图片。 在工具菜单中选择【报表属性】,弹出报表属性窗口,选择【其它】标签,在【URL 或 表达式】中选择我们要做为背景图案的票据扫描件,点【确定】即可如图所示:

此时报表会以扫描票扫描件为背景图片,我们调整报表的行高和列宽,使报表中要要填入数据的单元格与扫描件空白区域对应,比如:C2单元格对应”发票单位”,D5单元格对应”日期”等,如图中蓝色字体所示。本例中是直接填写的字符串,实际应用中也可以从相应数据集中读取。 设置报表打印属性 1、在工具菜单中选择【报表】--【报表属性】,弹出报表属性窗口,选择”打印”标签,将 【打印背景图】选中,如图所示:

润乾报表入门

1 前言 鉴于目前报表开发没有一个统一的规范,每个开发的风格和习惯也不一致,所以动手写了这份报表开发文档,一来有助于统一大家的报表的风格,提供一些常见问题的解决方案,二来方便以后新人的学习使用。本人也是略懂皮毛,有什么错误和不足之处,欢迎大家补充修改。

2.报表工具安装 解压后运行runqian-v4.5.5-install.exe安装文件,按引导完成安装。其中,在初次打开报表文件和发布报表文件的时候(后续会提到),会提示我们需要lic文件,就是下图中的两个lic文件。 Figure 1

3.报表工具的使用 3-1 配置数据源 使用报表时需要先对数据源进行配置: Figure 2选择新建一个数据源:

Figure 3 项目中默认使用的数据源名称为reportjndi.参考图3进行配置后,点击连接,进行数据源连接,这样就完成了报表服务器与数据库的连接。 3-2 新建报表 目前的报表形式分为两部分,一是用来显示查询结果的“报表名.raq”文件,另一个是用来提供查询条件的“报表名_arg.raq”文件。我们只需要在保存文件的时候,按上述格式命名,打开.raq文件时,会自动打开相关的_arg.raq文件。 3-3 结果显示报表设计 首先新建一张报表,直接点击左上角工具栏上的即可。按照给定的表样设计好报表名名、列名。如下图,这里提供一种样式当做参考模板,如客户无特殊需求,希望各开发按照统一的样式标准进行设计,有助于提高所有报表的统一性,后面还会提到一些规范,希望大家也可以遵守起来。

Figure 4 报表名这一行,采用黑色、二号字,加粗。列名采用白色、三号字,加粗,背景色使用淡紫色(颜色相近即可)。若每一列下面还要分列,则使用黑色、小三号字,结果数据使用黑色、四号字。 Figure 5 设定好报表样式后,开始根据逻辑进行取数,设置每一列的宽度时,如果需要在一行中完整显示的,要选择“按单元格内容扩大”,并去掉“自动换行”。

集算报表与润乾报表的函数语法对比

集算报表与润乾报表的函数语法对比 集算报表5.0在保留润乾报表V4.x的核心功能外,进行了优化和精简,其中报表函数也做了适当优化,这里就常见计算来比较一下二者函数语法之间的差异。 对比函数一览表 1数据集函数 1.1d s.group() 润乾报表: datasetName.group(selectExp{,descExp{,filterExp{,sortExp{,groupSortExp{,groupDescExp{,rootGr oupExp}}}}}}) 集算报表: datasetName.group({,filter_exp};{sort1}{:order1},…;{ groupSortExp }:{ groupOrderExp })

选项: @r 是否root数据集表达式 主要改变: 1、增加@r函数选项,取代原rootGroupExp表达式参数 2、取消分组前记录的排序顺序descExp参数 3、更改排序表达式和排序顺序参数语法 举例: 1.2d s.select()/ds.select1() 润乾报表: datasetName.select( {, desc_exp{, filter_exp{, sort_exp{,rootGroupExp}}}} ) datasetName.select1(selectExp{,filterExp{,rootGroupExp}}) 集算报表: 将原ds.select()和ds.select1()合并为ds.select()语法如下 datasetName.select({: order_exp},{ filter_exp },{num_exp},{distinct_exp})选项: @r 是否root数据集表达式 主要改变: 1、增加@r函数选项,取代原rootGroupExp表达式参数 2、取消数据的排序顺序descExp参数 3、更改排序顺序参数语法 举例:

润乾报表实现预置分组报表及改进

润乾报表实现预置分组报表及改进 预置分组报表在报表开发中比较常见而且比较棘手。所谓预置分组报表是指分组没有规律,可能是分组范围没有规律,也可能分组顺序没有规律,需要报表开发人员事先预置(固定)分组的报表。常见的预置分组报表一般有如下三类:按段分组报表、固定次序分组报表、多层固定次序分组报表。下面分别看一下这几类报表的特点,以及润乾报表的实现方法。 按段分组报表 这类报表的特点是分段的区间并未在数据库中存储需要根据相应字段(如年龄、日期)计算,并且每个分段可能会发生变化(如每年节假日所在日期可能不同),经常由用户随意指定。如:统计20-30岁,30-40岁,40-50岁各年龄段的用户数量;每年节假日(春节、端午节、国庆节)期间公路铁路承载的旅客统计。 下面通过实例说明,报表样式如下: 该报表是根据订单表统计各(预置)时间段内,各地区的订单数量、订单金额汇总。其中各时间段范围为: 【1996年圣诞前:date <= 1996-12-25 1996年圣诞--1997年国庆:1996-12-25 <=date <= 1997-10-1 1997年国庆--1998年五一:1997-10-1 < date <= 1998-5-1 1998年五一以后:date>1998-5-1】 实现 润乾报表实现该类按段分组报表主要使用ds.plot()函数,计算一个值在一个完全划分中的位置。报表模板及其表达式如下: 其中,参数arg1为日期组,默认值为:1996-12-25,1997-10-1,1998-5-1。 设置B1显示值表达式:map(to(0,count(arg1)+1),arg2),其中参数arg2为字符串组,默认值为:1996年圣诞前,1996年圣诞--1997年国庆,1997年国庆--1998年五一,1998年五一以后。 使用ds.plot()函数可以非常方便地实现上述报表,而且可以通过该函数的参数控制是否包含边界,对于分组较少并且边界包含规律的分组报表尤其适用。 不过,当段界包含不规律时则无法使用ds.plot()实现,比如上例中如果时间范围变成:

润乾报表批量打印实例

报表批量打印开发全过程(从零开始) 第一步:安装报表开发工具 下载地址: ftp://172.18.33.219/URP开发必备软件/报表/可执行文件/报表工具客户端设计器的安装文件将该目录下的文件下载到本地并安装 目录内的”江苏金智内部开发版设计器v355.dat”注册用 第二步:开发报表 一般是在现有的报表基础上修改出自己的报表,这样可以快一些,这些报表可以从报表服务器上下载到, 地址:https://www.360docs.net/doc/078702998.html,:9093/report/console/index.jsp host文件:172.18.33.250 https://www.360docs.net/doc/078702998.html, 用户名:amadmin/11111111 (1)配置数据源,数据源可以通过报表控制台查询

(2)进行宏定义(类似于系统变量,将来可以通过外部页面传递进报表) (3)配置数据集(可以使用宏定义的变量)

(4)开发报表 第三步:将开发好的报表上传至报表服务器(1)找到要上传的位置,点击新增报表

(2)选择本地报表,完成后点击添加完成报表添加

第四步:开发批量打印程序,一般界面如下图所示 批量打印逻辑:先检查是否勾选,若勾选则打印勾选记录,若不存在则检查查询条件是否为空,不为空则打印所有满足查询条件的记录,否则提示“请选择要打印的记录” 涉及的文件: 开发服务器中:swms.propertie,BGTAG.jsp,JB.jsp 报表服务器中:batchPrint.jsp (1)swms.propertie文件中增加报表服务器打印地址 #报表服务器打印地址 REPORT_PRINT=https://www.360docs.net/doc/078702998.html,:9093/report/run/reportJsp/batchPrint.

润乾报表设计器简易教程

润乾报表设计器简易教程 建立一个新的报表由存储过程的编写和表样的设计两部分组成,其中,表样的设计是利 用润乾设计器进行的。用润乾建立一个新的表样可以分为以下几步:新建数据源、连接数据源、设置参数、设置数据集、绘制表样、预览表样。 在以下步骤说明中,以预算上报下达差异表为例进行说明。该报表的查询条件包括年度、 单位和模板。表样如下所示: 2010年预算上报下达差异表 制表部门:查询单位期间:2010年单位:万元 制表人:登录用户制表时间:2010-07-26 1新建数据源 配置数据源的目的是为了连接数据库。 配置的步骤如下: 打开设计器后,点击配置——数据源,打开配置数据源的界面。 点击新建,在数据库类型中根据实际情况选择数据库类型,针对TBM系统,选择的是关系数据库,点击确定。 在数据源常规属性设置页面进行数据源的设置,如下图所示:

?数据源名称:可以任意指定,建议采取tbmbj等名称对各地数据库进行直观性 区分。 ?数据库类型:选择对应数据库类型,TBM系统采用的是DB2数据库。 ?客户端字符集:指的是从数据库取出的数据在客户端展现时的字符编码,可以采用默认的GBK。 ?数据库字符集:指的是从数据库中取过来的字符编码,根据数据库的编码类型选择,可以采用默认的GBK。 ?驱动程序:输入“com.ibm.db2.jcc.DB2Driver”即可。 ?数据源URL:数据源URL的输入格式为jdbc:db2:// IP地址:端口号/数据库名,例如:jdbc:db2://192.168.168.6:50000/tbmbj。 ?用户、口令:数据库用户名和密码。 设置完成后,点击【确定】按钮,回到数据源配置界面,关系数据库类型的数据源就配置完成了,数据源配置界面中就列出了新建的数据源。 2连接和断开数据源 选中需要连接和断开的数据源后,点击数据源配置窗口的连接或断开即可。 3设置参数 此处设置的参数是指报表中需要的参数,包括报表的查询条件、从页面URL传过来的参数等。 对于预算上报和下达差异表,需要传入两类参数:一是查询条件,包括年份dateflag、单位dptid和模板groupid;二是从URL中传过来的参数,用于显示制表部门和制表人,其中指标部门即用户在查询条件中选择的单位,无需再次设置该参数,制表人即当前登录用户,因此需设置参数userid。由于从页面或URL传入的都是ID而不是名称,所以 在设置参数的时候也是设置的dptid而不是dptname,别的参数类似。 点击配置——参数,打开参数编辑页面,点击增加后在该页面增加一条参数记录;

润乾所有问题汇总

参数和宏 参数在SQL 语句中如何使用? 答:在sql 语句中需要用到参数的地方,写上"?",然后在参数的tab 页中,根据?的顺序,依次写入含参数或者不含参数的表达式,如下图所示: 参数能在单元格中使用吗?和在SQL 语句中的用法有什么区别? 答:可以,直接引用参数名即可,把参数作为表达式的一个变量来使用,例如:=arg1+1 sql 语句中写上 问号 根据问号顺序写 入含参数的表达 式 宏和参数有什么区别?怎么使用宏? 答:参数是有数据类型的变量,在报表运算过程中作为变量来使用。宏是一个字符串标识,没有数据类型,报表运算之前,引擎会搜索报表定义,检索到宏名,替换成宏值,全部替换结束后,才进行报表运算。 宏的引用方式:${macroName} 宏和参数在网页中如何传递? 答:方法一:通过tag 标签来传递, 参数及宏的个数应该与报表中的参数及宏个数相同,参数名及宏名大小写一致。 如果参数值或宏值是变化的,那么应该先在JSP 代码中将参数串拼好,再传入Tag 中, 如下所示: <% String params = "param1=" + value1 + ";param2=" + value2 + ";" … … ";macro1=" + value1 + … … %> WEB 发布时,如果我自己定制参数输入页面,如何把参数值传递给报表? 答:在jsp 中获得参数值,然后先在JSP 代码中将参数串拼好,再传入Tag 中,如下所 示: <% String params = "param1=" + value1 + ";param2=" + value2 + ";" … … ";macro1=" +

润乾报表使用手册

报表使用手册 XX股份有限公司 中国济南

目录 1 概述.................................................................................................................................. - 4 - 2 安装.................................................................................................................................. - 4 - 2.1 准备好安装程序 ............................................................................................ - 4 - 2.2 安装中的选项................................................................................................. - 4 - 2.3 授权文件配置................................................................................................. - 5 - 3 报表制作.......................................................................................................................... - 6 - 3.1 报表制作要求................................................................................................. - 6 - 3.2 制作一张报表的步骤.................................................................................... - 6 - 3.3 启动报表设计器 ............................................................................................ - 7 - 3.4 连接数据源..................................................................................................... - 8 - 3.4.1 数据源对话框 ........................................................................................... - 8 - 3.4.2 编辑数据源 ............................................................................................... - 8 - 3.4.3 注意事项.................................................................................................. - 10 - 3.5 设计报表格式............................................................................................... - 11 - 3.5.1 格式设计.................................................................................................. - 11 - 3.5.2 需注意事项 ............................................................................................. - 12 - 3.6 定义参数....................................................................................................... - 12 - 3.6.1 参数的编辑 ............................................................................................. - 12 - 3.6.2 常用参数举例 ......................................................................................... - 13 - 3.7 定义宏........................................................................................................... - 13 - 3.7.1 宏的编辑.................................................................................................. - 13 -

相关文档
最新文档