专业报表解决方案FineReport技术白皮书

上传人:1888****888 文档编号:38944710 上传时间:2021-11-09 格式:DOC 页数:232 大小:17.66MB
收藏 版权申诉 举报 下载
专业报表解决方案FineReport技术白皮书_第1页
第1页 / 共232页
专业报表解决方案FineReport技术白皮书_第2页
第2页 / 共232页
专业报表解决方案FineReport技术白皮书_第3页
第3页 / 共232页
资源描述:

《专业报表解决方案FineReport技术白皮书》由会员分享,可在线阅读,更多相关《专业报表解决方案FineReport技术白皮书(232页珍藏版)》请在装配图网上搜索。

1、FineReport技术白皮书 专业报表解决方案 FineReport技术白皮书前言报表的由来随着现代化信息的高速发展,信息已经不再是传统的纸质文件,而是存储在计算机中的各种二进制比特流,但是存储的数据永远只能展现一条条的记录,而我们想看到的却是一种风格明确、样式美观的图表结合的展现,这个时候就产生了报表。报表的本质是从原始数据中抽取出重要的信息,经过一系列的分析和处理后,在浏览器上给客户做最终展示,客户可以不用安装任何终端,直接通过浏览器进行报表的浏览。 报表软件的原理图报表的现状现如今,制作报表的方式主要是两种:1:通过一些如Excel、Word之类的编辑软件进行报表的制作,这些微软自带的

2、编辑软件可以做出很多和实际业务相联系的复杂报表,并且也能满足数据图表结合的展示,但是这类编辑器最大的缺点就是不能根据数据库中数据动态改变,而且每次编辑时都要进行反反复复的sql语句的编写,一旦出错,查找起来会很麻烦。2:一些软件系统自带的报表展示,这类报表确实可以动态的取数,实现报表和数据库的交互,但是这类报表的局限性在于其展示效果和代码编写及系统维护之间的冲突。一般的自带报表都只能做一些简单的展现,这样的话代码编写简单,维护方便,但是一旦涉及到实际应用时,往往很难满足最终客户的需求。而且一旦想要满足客户需求时,就得找到开发系统的人进行相关代码的更改和重做,这样做起来维护相当麻烦。总结起来,为

3、了满足客户需求,这类报表面临的问题如下:l 项目周期大大超过预期,延期的问题非常普遍l 项目开发过程中又产生了新的需求,不能快速响应业务需求的变化l 项目验收后,用户自己不能维护,所有的定制工作都需要找软件开发公司l 软件质量低下,不稳定,bug多l 软件人才流动造成严重影响以上几个问题带来的最直接的后果,即为项目亏损。出现这些问题最根本的原因,是用户的需求不成熟,不断变化。而无论是采用定制的代码开发,还是基于一些平台的二次开发,都会有陷入问题泥潭的感觉。从本质上说,是因为在软件的开发过程中,需要编写过多代码的缘故,编写代码需要很高的技能,而且容易出错,导致bug。Finereport的出现及

4、作用通过分析报表现状,我们可以发现如果有一款专门做报表展示的软件,对项目的完成和客户的展现都有很大的帮助。但是99年到02年,几乎没有什么报表工具可以使用,java工具只有国外的几款,而且这些报表的制作对中国的复杂式报表却无能为力,很多时候根本就做不出来,而后来出现的一些国内软件也都是面临这些问题。这时FineReport出现了,首先,由于FineReport的目的是立足于中国市场,理念是“高效易用,随需而变”,这让它推出来后很快的适应于中国市场的报表需求;其次,做这些基于数据库的展示,查询和录入的页面,不再需要编写代码了,而是通过FineReport提供的模板设计器,拖拖拽拽就制作出实现数据

5、展示(报表),数据查询(参数)和数据录入(表单)功能的页面模板,然后将这些模板保存到FineReport服务器指定的目录下面。当最终用户通过浏览器远程访问某个页面模板,FineReport服务器会把用户指定的页面模板自动解析成零客户端的html页面给浏览器,这样用户就可以在浏览器里面查看或录入数据了;最后,由于FineReport的易用性、傻瓜性,可以在项目交付后把FineReport这个工具软件提供给最终用户,让他们可以基于FineReport做简单的页面修改以达到自我维护和更新系统的目的。本文档的适用群体软件公司:软件公司拥有专门的技术人才,很容易学会FineReport的使用,可以在ER

6、P,CRM,OA等软件产品中集成FineReport,大大加快软件的开发进度,增加软件的稳定性,大大降低软件的后期维护成本,提高了最终用户的满意度。其他的商业公司,政府机关等:有了FineReport,单位现有的软件,能够做到随需应变,对它们进行改进和增强,不再完全依赖于软件公司,而是自己经过简单的培训后就可以来做了。这样,单位所有的软件,不再是不能随时改进和增强的静态系统了,而是随着需求的变化而变化的动态系统了,从而彻底走出软件业的怪圈- 年年需要花钱买新的软件,买来的新软件却不能满足年年变化的需求。文档提要 阐述FineReport报表产品 表明产品制胜点 介绍产品功能特点 展现产品技术特

7、性 产品的应用和部署 产品系统化的扩展 产品价值及承诺公司联系方式您可以通过以下方式了解该产品: TEL: 南京:服务电话:(025)51862240服务电话:(025)66780097 E-mail: 商务:business 技术:support 传真:(025)66780137 网址:由于产品的更新,本白皮书并不代表帆软软件有限公司提供的产品与本白皮书描述的内容完全一致,敬请谅解。CopyRight2013 帆软软件有限公司.保留所有权利.目录前言1报表的由来1报表的现状1Finereport的出现及作用2本文档的适用群体3文档提要3公司联系方式4一、产品简介91.1系统架构91.1.1

8、FineReport应用架构图91.1.2 FineReport技术架构图91.2报表组成101.2.1 报表设计器111.2.2 报表服务器111.3 产品环境支撑121.3.1 软件环境121.3.2 硬件环境12二、核心优势152.1 设计器152.1.1 Excel的设计风格152.1.2 三层架构设计212.1.3 多工作目录的配置212.1.4 多人协同工作232.1.5 零编码设计242.2中国式复杂报表272.2.1 多源分片282.2.2 行列对称312.2.3 自定义分组322.2.4 动态格间运算342.2.5聚合报表372.2.6 层式报表412.3数据决策支持422.

9、3.1 数据分析422.3.2 图表分析462.3.3 在线实时编辑器592.3.4 即时分析602.4 Flash打印612.5填报632.5.1填报方式多样632.5.2 多sheet报表使用652.5.3数据来去无关672.5.4编辑方式多样682.5.5零客户端填报692.5.6多级上报692.6 B/S设计器732.6.1 IT部门准备数据源742.6.2业务部门构建即席报表752.6.3一个人力资源管理的相关案例802.7移动平台的展示85三、功能特点863.1设计器863.1.1Excel设计界面863.1.2数据绑定863.1.3自定义布局883.1.4自动备份883.1.5国

10、际化语言支持893.2报表设计893.2.1数据源893.2.2数据扩展963.2.3行列对称963.2.4分组973.2.5多源分片1023.2.6聚合报表1033.2.7强大的函数支持1053.2.8动态格间运算1063.2.9数据结果处理1073.3报表展现1103.3.1单元格属性1113.3.2条件属性1123.3.3单元格形态1143.3.4钻取式报表1143.3.5套打1193.3.6分栏1203.3.7分页1203.4图表1263.4.1图表数据源1263.4.2图表类型1283.4.3图表交互1323.4.4图表属性设置1333.4.5在线切换样式1343.4.6组合图135

11、3.4.7地图1363.5参数交互1363.5.1参数定义1363.5.2参数界面1373.5.3丰富的编辑器1403.5.4控件管理1423.5.5不延迟展示报表1443.5.6扩展功能1453.5.7通用查询1473.6填报1473.6.1填报属性设置1483.6.2单元格编辑类型1503.6.3自动计算1533.6.4展现后填报1543.6.5 多sheet填报1543.6.6 灵活的校验方式1553.6.7在线导入Excel1583.6.8 多样的填报方式1583.7输出与打印1603.7.1设计器中输出1603.7.2 B/S展现输出文件多样化1633.7.3完善的Excel输出支持

12、1643.7.4打印方式1663.7.5灵活的打印控制1673.7.6 控件的打印1683.7.7在线实时编辑后的打印168四、技术特性1704.1 FineReport主要性能特点1704.1.1数据量和报表样式1704.1.2并发数量1704.1.3可靠性1714.2 FineReport相关实测数据1714.2.1容量1714.2.2响应1714.2.3并发1714.3 FineReport性能优化1724.3.1数据源的获取1724.3.2制表过程优化1784.3.3控件的优化使用1824.3.4导出优化1834.3.5并发控制与缓存机制183五、应用与部署1885.1 报表工作目录1

13、885.2 项目部署1905.2.1 Java项目的无缝集成1905.2.2 非Java项目独立部署1935.2.3 与C/S系统的集成1945.3权限1985.3.1丰富的权限认证方式2005.3.2权限的粒度2025.3.3 灵活的权限集成202六、扩展实现2046.1 API实现原理2046.2开放的API2056.2.1 报表数据源2066.2.2 逻辑处理2066.2.3 导入导出接口207七、结束语2087.1产品价值2087.1.1零编码设计2087.1.2图表结合动态展现2087.1.3辅助决策共赢未来2087.2服务宗旨和承诺209一、产品简介1.1系统架构1.1.1 Fin

14、eReport应用架构图 FineReport立足于中国复杂式报表需求,通过长达十年的应用,积累了丰富的经验,其在实际中的具体作用如图1.1所示:图1.1 FineReport应用架构图1.1.2 FineReport技术架构图FineReport报表系统主要由报表设计器(设计模板)和报表服务器(解析模板)两大部分组成,使用层次鲜明的三层结构体系搭建,通过关系数据库接口连接数据源,所有的业务处理都在设计器(中间层)中完成,并最终通过服务器解析展现给用户,其技术架构图如图1.2所示:图1.2 FineReport技术架构图1.2报表组成FineReport由设计器和服务器组成,其整体使用组成图如

15、图1.3所示:图1.3 FineReport整体使用组成图 1.2.1 报表设计器FineReport设计器可以进行表样、数据、展现、打印等报表设计文件中各种元素的设计,是报表设计和报表应用开发、调试、部署的一体化平台,其组成原理如图1.3所示:图1.3 FineReport设计原理图 1.2.2 报表服务器报表服务器是指用在web环境中解析报表的Servlet形式的服务器,用户通过浏览器和报表服务器进行应用交互。l 报表解析:FineReport服务器主要用来读取和解析设计器制作好的模板,并将模板转换成HTML页面,方便用户通过浏览器查看、修改和打印数据。l 缓存管理:面对频繁访问所造成的资

16、源浪费和效率低下,FineReport提供了强大的缓存机制进行数据的缓存,使用户的访问更加高效。l 连接池的配置:通过建立一个数据库连接池以及一套连接使用、分配、治理策略,使得该连接池中的连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销。l 性能管理:支持分布式集群和超大数据量运算,并支持大量用户并发处理。1.3 产品环境支撑FineReport报表采用纯JAVA开发,报表工程支持所有可部署JDK的操作系统、有JDBC接口的数据库,支持UNIX/LINUX与Windows。而非JAVA的报表工具在这方面要困难得多。1.3.1 软件环境具体软件环境要求如下表所示:操作系统:So

17、laris 、Aix、Windows、Linux、Unix、IRIX;数 据 库:Oracle、SqlSever、Mysql、Access、Sybase、DB2、Postgre、Derby(主流的一些关系型数据库);服 务 器:Tomcat、Jboss、Weblogic、WeB/Sphere、Tongweb、resin等web应用服务器;浏 览 器:IE、FireFox、Chrome等主流浏览器。1.3.2 硬件环境 具体硬件环境要求如下表所示:帆软软件FineReport报表运行服务器最低配置要求用户数100用户以下100200用户200500用户5001000用户10002000用户200

18、03000用户30004000用户40005000用户5000用户以上应用服务器硬件配置一般服务器(配置较高的PC也可)内存=1G;CPU:1个双核一般服务器(配置较高的PC也可)内存=2G;CPU:1个双核内存=2G; CPU:1个四核内存=2G;CPU:1个四核内存=3G;CPU:1个四核内存=4G;CPU:1个四核内存=6G;CPU:2个四核内存=8G;CPU:4个四核小型机(hp或ibm)操作系统Windows2000/2003 serverWindows2000/2003 serverWindows2000/2003 serverWindows2000/2003 serverWind

19、ows2000/2003 serverLinux/UnixLinux/UnixLinux/Unix小型机提供商安装注意:应用过程中的附件文件存放于应用服务器中,系统不支持文件的网络存储,以上服务器硬盘请尽量大,并能保持服务器上的硬盘可以扩增;数据库服务器硬件配置可与应用服务器公用可与应用服务器公用内存=2G;CPU:1个四核内存=3G;CPU:1个四核内存=4G;CPU:1个四核内存=6G;CPU:2个四核内存=8G;CPU:4个四核小型机(hp或ibm)小型机(hp或ibm)操作系统Windows2000/2003 serverWindows2000/2003 serverWindows20

20、00/2003 server或者Linux(视客户的熟悉程度)Linux/UnixLinux/Unix小型机提供商安装小型机提供商安装数据库Sql Server 2000/2005 专业版Sql Server 2000/2005 专业版Sql Server 2000/2005 专业版Sql Server 2000/2005 企业版Sql Server2000/2005 企业版或Oracle9.1.2(其它版本也可)Oracle9.1.2(其它版本也可)Oracle9.1.2(其它版本也可)Oracle9.1.2(其它版本也可)/小型机提供商安装调试Oracle9.1.2(其它版本也可)/小型机

21、提供商安装调试帆软软件FineReport报表运行服务器优化配置建议用户数100用户以下100200用户200500用户5001000用户10002000用户20003000用户30004000用户40005000用户5000用户以上应用服务器硬件配置一般服务器(配置较高的PC也可)内存=2G;CPU:1个双核内存=2G;CPU:1个四核内存=2G;CPU:1个四核内存=3G;CPU:1个四核内存=4G;CPU:1个四核内存=6G;CPU:2个四核内存=8G;CPU:4个四核小型机(hp或ibm)小型机(hp或ibm)操作系统Windows2000/2003 serverWindows2000

22、/2003 serverWindows2000/2003 serverWindows2000/2003 serverLinux/UnixLinux/UnixLinux/Unix小型机提供商安装小型机提供商安装注意:应用过程中的附件文件存放于应用服务器中,系统不支持文件的网络存储,以上服务器硬盘请尽量大(400G及更大),并能保持服务器上的硬盘可以扩增;数据库服务器硬件配置可与应用服务器公用内存=2G;CPU:1个四核内存=3G;CPU:1个四核内存=4G;CPU:1个四核内存=6G;CPU:2个四核内存=8G;CPU:4个四核小型机(hp或ibm)小型机(hp或ibm)小型机(hp或ibm)操

23、作系统Windows2000/2003 serverWindows2000/2003 serverWindows2000/2003 serverLinux/UnixLinux/UnixLinux/Unix小型机提供商安装小型机提供商安装数据库Sql Server 2000/2005 专业版Sql Server 2000/2005 专业版Sql Server 2000/2005 专业版Sql Server 2000/2005企业版Oracle9.1.2(其它版本也可Oracle9.1.2(其它版本也可Oracle9.1.2(其它版本也可Oracle9.1.2(其它版本也可/小型机提供商安装调试O

24、racle9.1.2(其它版本也可/小型机提供商安装调试硬盘空间1TG及以上二、核心优势2.1 设计器2.1.1 Excel的设计风格企业在选择报表解决方案时,不仅要考虑报表工具的功能和服务,还要考虑它是否易学、易用。国内用户都非常熟悉Excel,也经常用它做些简单的报表,所以我们从设计的方便性出发,研究出了贴近Excel使用习惯的报表设计器。拥有excel设计风格的FineReport设计器,不但能快速解决复杂的中国式报表制作难题,提高报表的制作效率,而且能大大降低设计人员的学习成本,提高企业的经济效益。FineReport报表的设计风格和Excel相似(当然二者本质并不一样),整个设计窗口

25、是格子式的可视化编辑界面。用户可以借助这个界面所见即所得的设计出任意复杂的表样,而且免去了传统条带式设计数据对齐的繁琐,使得报表制作的效果得以大大提高。整体界面如图2.1所示:图2.1 FineReport设计器整体界面图2.1.1.1无限扩展的行列 FineReport设计器的界面与Excel一样,包括单元格的命名方式和组织方式,同Excel一样支持无限行和无限列伸展,用户在设计格子较多的报表时,也无须单行单列的进行添加,并且未使用的格子并不会占用内存,因此不存在性能问题,如图2.2所示:图2.2 无限扩展行列示意图2.1.1.2无失真导入导出Excel由于很多公司以前制作报表都是使用的静态

26、的Excel表,现在使用新的报表软件后往往面临着需要重做的难点。FineReport考虑到这一点,提出了完全兼容Excel的理念,并最终得以实现。公式的兼容普通公式除了相似的界面风格之外,FineReport还能够完全兼容Excel的所有公式,当Excel中的计算公式导入到FineReport之后,无需做任何更改,仍可以按照原有的计算规则进行运算,方便实用,见图2.3:图2.3 Excel中公式设置导入之后,见图2.4:图2.4导入FineReport中的Excel公式拖拽在报表的编辑过程中,我们有时需要重复写类似的公式,这样的话就很不方便,FineReport将完全类似的表格直接拖动,利用公

27、式或字符串来进行单元格内容的复制。FineReport能够像Excel一样,完全支持公式、数字和字符串的拖拽复制,如图2.5所示:图2.5拖拽复制示意图格式的兼容由于界面风格FineReport支持无失真导入或导出Excel。当客户有已经通过Excel画好的Excel表样,可以用FineReport导入Excel文件,然后将需要动态展现数据的单元格绑定数据列,设定处理逻辑,快速完成报表制作,大量节约报表制作者绘制表样的时间。同样,当客户用FineReport制作好的报表需要输出时,可以完全按照Excel的样式输出,如图2.6所示:图2.6导入导出示意图2.1.1.3行列变化时单元格引用的内容自

28、动变化设计报表时经常会临时增加行列或者删除行列,随之而来的就是公式会不会不能使用了,FineReport设计报表时在行列变化时,单元格引用的内容、公式都会根据行列的变化而自动变化,如图2.7所示:图2.7公式自动变化示意图2.1.2 三层架构设计传统的报表工具在内网中工作时,需要将设计器和报表工程都部署到服务器上,这样就产生了几个问题:1:在服务器上需要安装设计器,而对于使用内网的公司,服务器的安全要求一般都比较高,只有相应服务器才能去连接数据库,对于一些二层架构的报表来说,就需要在服务器上安装设计器,增加了服务器管理员的维护难度;2:当服务器上的报表需求变化时,需要去现场进行操作,麻烦而且效

29、率低;3:进行一些迁移时,二层架构的逻辑比较复杂,相当麻烦;FineReport基于此,采用主流的三层架构模式进行设计,只需要在报表设计员的电脑上安装设计器,设计完后,将工程部署到服务器上,其他用户只要电脑上有浏览器,就可以直接访问报表。一旦报表需求变化后,使用FineReport设计器,可以:1:很方便的在本地进行设计然后通过工作目录的切换发布到远程服务器上;2:直接对远程服务器上面的报表文件进行编辑;这样对于公司的使用来说只需要部署一次工程,以后就可以直接远程设计,迁徙方便,提升效率,其实现原理如图2.8所示:图2.8三层架构示意图2.1.3 多工作目录的配置FineReport提供了报表

30、工作目录的概念,即每一个报表的独立应用或者集成环境都是一个工作目录。每个工作目录下都有相应的jar文件,报表模板文件,资源管理文件等。当我们在本机安装了FineReport之后,本机安装目录下自带的WebReport文件夹就作为一个独立的本地工作目录来使用。在实际的应用中,更多的需求是使用远程工作目录。即报表服务器集成部署于实际的系统当中,报表设计者通过设计器连接远程环境,直接对报表模板文件,配置参数等进行编辑保存。特别如果有测试环境,生产环境等多个环境的情况下,FineReport的多工作目录便捷切换便能够给设计者提供极大的便利。 多工作目录即对应着多运行环境,具体如图2.9所示:图2.9工

31、作目录原理图FineReport中的工作目录的配置界面及便捷切换工作目录如图2.10所示:图2.10 FineReport目录切换示意图2.1.4 多人协同工作一个系统开发团队难免要多人同时从事报表的开发工作,可能每人承担一部分互不相关的模板任务,也有可能要利用到他人设计的报表。现在一般的管理方式就是SVN/VSS/CC等做版本管理,但是实现性较差,特别是如果误操作还可能带来文件恢复等较繁琐的工作量。那么借助FineReport的报表运行环境就可以轻松做到多人协同制表,实现如图2.11所示:图2.11多人协作示意图 多个报表制作人员可通过远程设计器连接到同一个报表运行环境,同时该连接又依据权限

32、控制每个制作人可操作的范围,保证多人工作情况下的数据和文件安全性。另外为了防止多人同时编辑同一文件,导致文件冲突的情况,FineReport提供了模板加锁和解锁的功能,也就是当A制作员打开一张模板进行编辑的同时,可以对当前模板进行锁定,则其它的制作员就不能同时来编辑这个文件,有效防止了文件编辑冲突。2.1.5 零编码设计成品软件工具关键在于功能、性能和上手。前两点后面会具体讲到,而所谓上手就是指经过简单的培训或者自学,很快可以自己使用,这样的好处有:1:无需花费大量时间和精力熟悉工具;2:人员流动时能够快速交接,使得业务系统正常运行;3:复杂的编码对用户来说是透明的,用户无需关注后台执行,不会

33、影响系统的稳定性;具有零编码设计功能的FineReport设计器,使得非编程人员也可以制作报表并且做得更好成为可能。只要是了解企业业务逻辑及简单的数据库知识的用户,都可以通过FineReport设计器,设计出符合自己实际业务需求的报表或表单。零编码的FineReport设计器不但为企业减少了相关人员的费用支出,还大幅度地提高了其报表的制作效率,为企业的快速发展提供强有力的支持。1:拖拽绑定数据列:图2.12 拖曳式绑定如果要绑定的数据排列顺序比较有规律的时候,可以一次性绑定多列,直接拖曳至设计面板中,如图2.13所示:图2.13多列直接拖拽2:参数的设置FineReport通过可视化的操作进行

34、了参数的设计,如图2.14所示:图2.14报表参数设计图 3:数据筛选设置可视化的数据筛选,如图2.15所示:图2.15数据筛选设置图4:自定义工具栏设置 可视化的工具栏选择,如图2.16所示:图2.16 工具栏设置图5:最终展现 最终效果展现如图2.17所示:图2.17最终效果展示图2.2中国式复杂报表中国式报表,从总体来讲,指的一些具有复杂性和任意性的报表。这些报表往往是样式不太规则,数据来自多个不同的地方,并且可能需要对数据在报表中进行一些相对复杂的处理。FineReport提供了异构数据源模型、Excel+绑定数据列的报表设计模型等,使得行列对称,动态数据处理这些传统工具需要靠编码来实

35、现的常见业务需求,仅通过简单的操作就能实现,轻松制作出复杂的中国式报表。2.2.1 多源分片企业想从一个数据表或一个数据库就想选出所有展现所需的数据是不切实际的,中国报表的一个重要特征是分片,与多源相关,但又不完全一样。多源一般都会是分片的,但分片却不一定是多源的。为了解决多源关联分片的问题,许多传统工具引入了子报表的概念。把每个分片做成一个子表,然后再在主表中拼接起来,传统工具理论上是可以通过子表拼接完成,但实际上仍非常烦琐。FineReport天然支持多数据源(集),同一张报表的数据可同时来自多个数据表,多个不同的数据库,或者多个不同的用户自定义数据视图,然后在报表中可直接相互运算形成最终

36、的报表。传统报表工具在理论上只支持单数据集,对多集的支持依赖于数据库的运算能力(叉乘与联合、存储过程),这对于较简单的比如两三个表的关联还不是很复杂,如果需要关联的数据表超过五个,则一是SQL语句繁琐,编写和维护都比较困难,再者普通的Union,Join等操作返回的结果执行效率往往很低。这时候一般就需要进行大量的SQL优化工作或者直接编码,用存储过程来实现。当表中数据涉及到多库一般难以支持,逞论多种不同类型数据源了。另外一种处理方式,就是将多数据源先变相整理成单一数据源,然后再进行其它操作,并不是真正意义上的多数据源。传统工具分片有以下问题:1子表割裂了整表的一致性,一张报表被分成了多个小表,

37、难以统一处理,给维护管理工作带来麻烦。从格式上看,各个子表各自独立,很难将格线统一对齐,某个子表的格式进行了调整,所有其它子表都需要改动,这是极其繁琐的工作。每个子表的大小不固定(可能随数据记录数而变化),由于传统工具的行列不对称。纵向排列的几个子表可以自动摆位,而横向则不行。主子表之间和子表相互之间都无法沟通数据,只能将主表的数据作为参数传递给子表,子表无法带回信息,也无法向其它子表提供信息。这时,整表的混合运算将非常困难,必须单独计算,无法采用子表的中间运算结果,不仅书写复杂,运算效率也很低。FineReport是纯java报表软件,支持多数据源(集),将一个数据库中不同数据表或者不同数据

38、库中不同数据表的数据取出来展现在一张报表上。FineReport连接数据源的方式多种多样,支持通过JDBC的方式直接连接数据库,或通过JNDI的方式与应用服务器共享数据连接,也支持通过JCO连接SAP系统。支持的数据库类型如Oracle、 DB2、SQLServer、MySQL等主流的数据库,除此之外,自定义的程序数据源,文本数据源,Excel数据源,XML数据源等等都可以直接作为报表的数据源来进行设计工作,同时数据源还具有无限的扩展性,可以支持WeB/Service, SOA等标准的数据。图2.18多源报表示意图报表的分片指的是报表被分成了多个区域,每个区域重复规则不同,而又可能相互运算。传

39、统的工具,大部分是条带状的处理模式,纵向的处理较多,而对于横向的处理能力很弱,仅能通过固定的模型来支持简单的交叉表。如图2.19,这是一个既有动态扩展数据,又有静态计算数据的分片报表。图中按照背景色的标识报表分为相对规则的四片:最上方的一组为动态横向扩展的表头,表明地区与时间信息,来自订单表;中间左上侧产品来自产品表;红色区域计算数据来自订单明细表;后面的白色背景部分,是动态的数据计算部分,是对所有订单明细的销售数据进行汇总运算;下方左侧客户名字来自于客户表;右侧黄色背景计算数据来自于订单明细表。而所有的订单数据计算都和其下侧的订单明细表通过订单ID关联,通过客户ID与客户表关联,也就是虽然报

40、表分为了多片,但各片的数据之间又并非各自独立,相互之间互有关联沟通。图2.19实际图表展现这样的报表虽然总体上是一个规则的整体,但是实际上却是不规则的数据布局方式,那么也就无法通过将多源整合成单一数据源来实现,那么传统的报表工具对这样的报表,就只有编码这一种解决方案。虽然像大多数工具也都提供了子报表来解决报表中格式不规则的情况,但是即使是子报表,受数据处理模型所限,也仅限于支持明细和列表结合的报表,如图2.20所示:图2.20子报表示意图FineReport界面的自由布局方式,使得报表的样式仅通过几次拖拽就能够完美呈现。而多源支持,则只需要通过单元格中设置关联条件即可将明细区与列表区的数据关联

41、对应起来,全程无需任何的编码。2.2.2 行列对称一些传统的报表工具,由于条带状的展现方式的缺陷,数据的纵向展示能力要远远强于横向,就需要专门的模型来制作交叉表。因此传统的工具也就以此将报表的类型划分为分组表,交叉表,主从表,明细表等类型,且两大主要的模型分组表与交叉表各自独立,不能互通,事实上并非所有的报表都遵循这些固定的格式,实际中的报表往往多种特性综合体现。例如图2.21所示报表有些类似我们在多源分片概念当中提到的分片报表,实际上由于行列对称的原理,我们在报表设计时可以按照需要任意定义扩展的表头样式。下表可以分为相对规则四部分:销售数据按照类别,地区汇总;销售数据按照类别,年月日期汇总;

42、销售数据按照客户,地区汇总;销售数据按照客户,年月日期汇总。图2.21 分析报表示意图FineReport采用的是EXCEL+绑定数据列的处理模型,天然支持行列对称,所有纵向的操作都可以在横向得到同样的充分体现。不仅不需要专门设定交叉表模型,还能够支持任意格式不规则的展现样式。 例如将这张表的行列对调一下,可以看到效果如图2.22所示:图2.22行列转换示意图2.2.3 自定义分组常见的原始数据存储的是具体的数值,而统计分析需要按照区间或条件来统计相关数据,这是典型的按段分组,也就是自定义分组:指数据的归类方式并非按照常规的已有数据来分组,而是按照分段分组或者其它不规则的分组。FineRepo

43、rt提供的自定义分组又可以按照分组方式分为条件分组和公式分组。条件分组主要用于支持分段型分组。例如图2.23是根据销售额的数额汇总划分客户的等级,这个等级字段在数据库是不存在的,因此使用分段分组来实现。图2.23条件分组示意图按段分组使用的设置,是高级分组当中条件分组,以枚举的方式来得到新的分组:图2.24 FineReport可视化操作相对条件分组来说,公式分组更加灵活,能够支持更加复杂的分组逻辑。例如普通的分组是按照每个字段单独作为一个分组基础。而可能在某些报表的分组中,是需要按照两个字段内容一一组合后,完全相同的记录才归为一组。这时候就需要用到公式分组将两个字段拼合到一起。效果如图2.2

44、5所示:图2.25公式分组示意图除了利用自定义分组对数据进行处理之外,在实际的应用中还有一种非常常见的分组方式,是组织递归分组,一般表现形式为企业或事业单位,或集团或部门的组织结构,并且数据的存储方式往往是关系映射表的类型,以ID,PREID形式来标明数据记录的层次关系。一般的报表工具处理此类的数据都要经过复杂的设置或者表达式编写,FineReprot则提供了专门的组织递归树模型。通过组织递归树,可以快速自动处理递归型的数据结构,使得组织结构形式的分组实现效率大大提高。仅需通过几个简单的拖拽就可以实现如图2.26所示形式的分组:图2.26递归树展现报表2.2.4 动态格间运算现今的企业从数据库

45、中取得数据后,往往都需要提供一些计算方法,对数据进行一些分析处理,例如求和,平均,统计个数等都是基础的数据处理。而同期比,环比,排名,占比,累计这些涉及到同一列数据之间的运算,我们称之为跨行组运算。例如环比,是将本期数据与相邻的上期数据进行比较,而本期数据与上期数据都是来自于同一列数据,这是跨行计算。同比,是将本期数据与上一年同期内每个数据作比较,例如本年5月的销售额比较上年5月的销售额,这两条比较的对象也来自于同一列数据,但又不是相邻,分属于本年和上年两个不同的组,这是跨组计算,具体如图2.27所示:图2.27动态计算示意图而由于报表工具制作报表,返回的结果集是动态的,也就是说我们在设计界面

46、中只能够了解到这个区域获取的具体是某个数据集的一列,但是这一列将返回的数据内容和总的数据条数并无法确定。这就使得跨行组运算成为必要的报表实现手段。绝大多数的报表工具都直接内置了基础的计算功能,例如对某一固定列进行全局的计算汇总,获取组内的小计,全部总计等,但是对于跨行组的运算就很难实现。个别工具能够支持较为简单的跨行运算,但是跨组运算则无法支持。即使是通过SQL或者対整列取出最大值等方法获取到排名,第一名等数据,也是具有很大的局限性。如果逻辑再复杂一些,例如获取2009年5月销售额超过1000万的5个分公司的数据,传统型的工具只能说是束手无策。上面我们提到了,同比,环比,占比累积分析等数据的运

47、算是我们在报表常见的一些基本分析方法。基于格子界面中数据扩展的特性,即设计界面与返回数据的一对多的关系,FineReport提供了一整套运算体系,用于扩展后数据的定位与相互引用计算,这就是层次坐标,通俗一点定义即动态格间运算。图2.28体现了同比,环比,排名运算:图2.28复杂跨行运算由报表的设计图(图2.29),可以看到同比,环比,组内排名,跨组的总排名,都是通过一些相对特别的公式,也就是我们所说的层次坐标公式来实现的:图2.29报表设计图 图2.30简单体现了数据的累计与占比:图2.30累计占比示意图 除了以上的运算,层次坐标公式还能够支持带条件的数据汇总,图2.31中计算的是当前年份内,

48、订单总额超过10万的月份共有几个:图2.31 条件设置图2.2.5 聚合报表在制作报表时,困扰用户最大的两个问题是:1:数据的多源与分片;2:报表层次嵌套并要有美观的对齐排列方式。当出现多张报表要求整合在一起显示时,传统报表一般是设置主子报表来实现,但是这种方法表面上可以实现,却有诸多问题。首先主子报表中,单元格插入子报表前必须设置的足够大,否则就会出现显示不完全的状况,也就是单元格不能根据子报表的大小自动扩展;其次子报表不支持多层嵌套,假如子报表中还有子报表,传统报表就无法进行展现。FineReport根据客户需求,推出了聚合报表的概念和标准,专门用于解决这类大报表制作难点。聚合报表的概念是

49、将多个分块同时放到一个报表里面,每一个块都类似一张单独的报表,而且报表之间相对独立,如报表布局(格子间不会相互牵扯、覆盖单元格等),相应模块之间依然可以传递数据。聚合报表中的聚合块边界采用像素来定位,其高度、宽度均可设置是否固定,设置分页优先级决定优先按哪个聚合块分页。这不仅解决了嵌入主报表中子报表显示不止一页的问题,也使得复杂式报表的制作变得简单。由于这些聚合块相当于聚合报表中的一个控件,不同聚合块之间的数据交互也很方便:模块之间独立使用具体使用场景如图2.32所示:图2.32聚合报表效果图某铁路局需要将某日的运输收入列在左上方,下面会放上相应日期的技术站作业情况,这个时候,铁路局为了统计的

50、方便,希望在右边分别展示按日、月、年各个线路的出入,难题出现了。在右边展示数据不难,难得是左边的位置不变,并且如果右边数据一页无法全部展示的话,希望只让右边的按时间统计的货车出入进行分页。传统报表假如只想实现第一种效果,那么就需要合理的估算好右边报表所需要的空间大小,否则一旦数据比较多就无法显示完全,但是想只按照右边的报表进行分页,那就不可能了。FineReport的聚合报表实现这种效果就很容易,上述一张很复杂难以实现的报表,在FineReport的设计器里面的样式如图2.33所示:可以看出报表设计很直观,图2.33聚合报表设计界面其最终效果图就是图2.32所示。单据类报表制作优势明显传统工具

51、利用主子报表制作如图2.33(2)所示的一张报表时,由于这种单据的复杂,为了最终效果符合对齐的要求,需要反复的去调整单元格的宽度,最终设计起来很是繁琐。如计划工作时间那一块,使用了17行,只能优先设计这一块的,再设计上面的标题和下面的具体内容,但是要想设计成图中右边部分,那么,调整起来的工作量呈几何倍的增长。 图2.33(2)普通票据图FineReport在制作这类报表的时候,采用的聚合报表解决这个问题就很轻松。首先产生这个问题的最大原因是因为报表不可能单独扩展一个格子,那么解决办法就是将上面的票据分为几个模块来制作,如图2.33(3)所示,图2.33(3)聚合报表制作票据类报表我们可以看到,

52、中间计划工作时间这一块是单独的一个模块,那么整个报表就分成了如图2.33(4)所示的7个模块,制作起来工作量瞬间下降许多。图2.33(4)聚合报表模块式制作2.2.6 层式报表在企业进行报表展现时,如果用到的数据库某个表有100多万、200多万甚至上千万条数据,而这个报表又要求展示出该表的所有记录,如果报表的运算并不复杂,没有跨行分组的运算只是简单的明细数据,传统的报表都会花上很长时间进行处理甚至直接死机。FineReport推出的层式报表概念不仅加快报表的展现速率而且缓解报表的内存压力。2.2.6.1 普通明细层式报表普通的模式,报表服务器会把报表执行完后才显示。如果采用层式报表,就只计算当

53、前页的报表数据,从而使报表展示速度达到最快。虽然这时报表尚未执行结束,已经执行出来的那部分已可以得到并送交客户端展现。简而言之,边执行边展现。由于从客户端输入请求,到执行出结果最前面一部分所需的执行时间很少,所以通过层式报表,可以大大的加快展现效率,提高用户体验。图2.34层式报表设置界面2.2.6.2 按页取数层式报表在只需要大数据量列表式浏览数据的情况下,为了追求更好的预览体验,我们提供了按页取数层式报表功能。通过设置分页取数的SQL语句,在终端预览时,每一页预览都会分别去取数并计算,这样预览每一页的时间都较快且大致相等。当然,在报表导出的时候取数和计算就是连续且是一次性的。2.2.6.3

54、 多数据集层式报表当数据量很大的时候,我们使用上面的层式报表是可以解决相当一部分问题,但是层式报表有其自身的限制:只支持单数据集。基于此,FineReport提出了优先显示的概念,当用户进行数据预览时,通过传入的页码,展示相应数量的数据,就可以避免一次性将大量数据读入报表进行展现。2.3数据决策支持 报表的最大作用出了展现外,就是辅助企业高层指定公司的发展计划,但是这样的话,传统的报表展现因为没有针对性,就难以满足需求。FineReport充分尊重市场需求,采用了一系列方式辅助企业进行决策分析。2.3.1 数据分析从一般意义上讲,数据分析可以看做是对原始数据进行提炼、计算、处理,然后提取出有用

55、的信息,形成结论以辅助决策。从这个角度,所有的报表都可以看做是数据分析,但是我们这里要讲的,并非简单的数据汇总展现,而是在展现的数据基础上,用户可以进行更多样的控制,达到更丰富的交互。2.3.1.1丰富交互编辑器在B/S端对数据进行二次分析,依赖于在浏览器多丰富多样的展示控件。FineReport提供了数十种之多的编辑控件,这些控件在参数查询界面与表单界面均可通用,使得设计者能够设计出各种交互功能,方便用户进行人机数据交互。FineReport提供的控件不仅包含的基础的文本,数字,日历,下拉框,还包括下拉树,单/复选框组,密码框,网页框等等。由于功能已经内置进FineReport的设计器,报表

56、设计者完全不需要编码即可直接使用,大大降低了设计者的使用难度。控件的设置界面:图2.35控件界面设置可以看到,控件的设置已经周到了考虑了各种可能的使用方法,只需要按照实际的需求组合相应的功能,即可得到相应的控件使用效果。部分控件的实际效果如图2.36所示所示:控件名效果文本数字日历下拉框(单/复选) 单/复选框组下拉树 图2.36 控件实际效果图2.3.1.2关联分析各个控件除了能够独立的去展示出各自的数据,很多用户希望控件之间还能够进行关联分析,包括控件之间的联动和制约。联动指的是两个以上的查询框内的数据有层次制约的关系。例如国家-省份-城市就是这样一个层次递进的制约关系:第一个选择框选择了

57、国家之后,第二个选择框内自动匹配该国家的省份记录,选择相应的省份,则第三个选择框对应列出该省份的城市。图2.37展示的是大区-城市-客户这样一个层次关系:图2.37联动实现效果图 另外,我们在实际应用当中也常遇到这样的情况,多个输入框之间存在制约是否可用的关系,例如报表的统计维度分别为年月日,则必须选择统计维度后,相应维度对应的日期选择框才能够生效,如图2.38所示:图2.38控件动态展现图2.3.1.3输入控制为了能够让用户的更方便快捷的使用查询/表单界面,FineReport提供了一些输入控制的方法来帮助用户实现更个性化,更人性的交互。输入控制主要体现在以下几个方面:参数为空时得到全部值;

58、-避免用户在没有输入参数值的情况下即提交查询,得到的是没有记录的报表,主要作用是改善用户体验。参数自动附默认值;-例如系统时间,登陆的用户等系统变量可以自动赋值。水印;-给予用户输入提示,编辑状态后水印内容消失。2.3.2 图表分析只是纯粹的数据展示一般客户都不会感觉很友好,FineReport通过不断积累和创新,图表功能非常强大:1:制作图表首先得要有数据源,通常的报表软件只能支持单元格数据源。然而有些情况下,一定需要使用数据集数据源而不是单元格数据源。例如报表当中分为两部分,左侧以表格形式展现当年的销售收入,右侧则以图表展现销售利润与销售收入的一个比较。这时候,如果没有数据集数据源,就只能

59、通过隐藏格子数据源来实现。在报表中隐藏数据一是不安全,二是性能较差。FineReport在这方面完全不用担心,它支持数据集数据源和单元格数据源两种设计方式,能满足您的各种需求。2:它支持各种图表及混合图表,以及一些图表交互、参数联动、热点链接、在线切换图表等非常实用的功能,还能进行各种样式设置,能满足客户的的各种需求,实现丰富的报表展现效果。2.3.2.1 FineReport图表支持自主多样现在主流的报表所使用的图表大多基于以下两种:FushionCharts、JfreeChart。FushionChartsInfoSoft Global公司所开发的一种基于flash的图表组件,图表使用的数

60、据都是以xml格式存储,传到前台的flash,最终渲染成实用的图表,使用起来方便快捷。但是FushionCharts图表分为V3和free两个版本,后者是免费的,很多报表软件商就是使用这种免费的版本,这种版本只能满足一些基本图表,一旦涉及到漂亮点、交互性强的图表时,就必须购买V3版,V3版涵盖更广泛的图表类型,一系列先进的功能和能力以及呈现在JavaScript的图表。Fusion Charts Free支持22种图形,Fusion Charts Free V3有超过45种类型的图表。JfreeChartJfreeChart是一种利用纯java开发的、开源的图表绘制类库渲染图表的图表解决方案,优点是能够基本满足主流的一些图表,并且是开源的,所以可以直接利用API进行开发。但是类和接口比较多,想要方便的使用图表,必须对每个图表对应Axis、Plot等类非常熟悉。还有一点,由于是国外的产品,未考虑汉字的展示,需要自己开发设置。并且既然是开源的软件,所以没有文档、缺少支持,所有东西全靠自己实现。这种第三方的图表集成进报表后,一般都会存在客户产生需求时更新周期长、某项功能需要自己开发或者付额外的使用费用、技术支持能力薄弱、后续升级没保障等通病。其对比如下图所示:FineReport支持14种图表样式,图表可放置在悬浮元素中以任意

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!