发明内容
针对现有技术存在的不足,本发明的目的在于实现一种基于浏览器的在线设计的报表快速生成及发布的系统及其方法,采用拖拽报表元素的方式完成报表设计,报表保存在服务器中,以url方式快速集成到其他业务系统上线,客户通过浏览器访问该报表时,服务器完成所有的数据收集和计算,将最终的效果展现给客户。
为了实现上述目的,本发明是通过如下的技术方案来实现:
一种报表快速生成及发布的系统,其特征在于,包括以下模块:
报表设计器,用于对报表组件进行布局,设定数据源及数据集,设置报表组件属性,生成报表模板文件,并将报表模板文件存储在数据库中;
解析模块,读取报表模板文件并解析各个报表元素,解析出其中包含报表组件,及其每一个组件的属性,并根据模板文件中数据源及数据集信息到指定的数据库获取对应的数据;
计算模块,用于获取报表组件中的表达式及脚本,逐一进行计算,完成各个报表元素的属性值计算,并将计算结果返回给各个报表组件;
渲染模块,根据计算模块计算的数据重新设置各个报表组件的属性,进行报表的重新组装,完成各个报表元素的重新组装和布局;
展现模块,用于对渲染模块得到报表在页面上进行展示,呈现出最终的报表效果。
进一步的,所述报表设计器提供的报表组件包括布局组件,数据组件以及独立元素组件;所述布局组件包括页眉、页脚、数据首、数据区、数据尾、分组首、分组尾、面板、表格;所述数据组件包括数据源连接、数据集、参数、合计;所述独立元素组件包括文本框、图片、图表、交叉表、复选框;所述报表组件均通过鼠标拖拽的方式进行绘制和布局。
进一步的,设计器生成的报表模板文件以XML文件的方式,记录所有报表元素的属性及归属关系。
作为优选,所述解析模块从数据库中获取模板文件,并解析XML中的各个报表元素,完成数据获取。
作为优选,上述展现模块的展示格式包括flash和html形式。
一种报表快速生成及发布的方法,其方法步骤如下:
(1)生成报表模板文件;通过表格设计器的拖拽组件对报表组件进行布局,设定数据源及数据集,设置组件属性,生成报表模板文件;将模板文件存储在数据库中;
(2)读取报表模板文件并解析;当用户预览报表时,通过解析模块读取报表模板文件并解析,并根据模板文件中数据源及数据集信息到指定的数据库获取数据;
(3)完成各个报表元素的属性值计算;获取报表组件中的表达式及脚本,逐一各个报表元素的属性值进行计算,并将计算结果返回给各个报表组件;
(4)完成各个报表元素的重新组装和布局;根据步骤(3)计算的数据重新设置各个报表组件的属性,进行报表的重新组装,完成各个报表元素的重新组装和布局;
(5)展现最终的报表效果;用户获取报表地址,将自己设计的报表集成到自己系统中,展现出最终的报表效果。
本发明运行在网络服务器上,有权限的用户可以随时通过浏览器接入进行报表设计及发布,设计部分主要由报表设计器组成,拥有大量的报表设计组件,采用条带式布局,通过拖拽组件的方式完成报表整体设计,通过组件的属性更改来完成细节上的处理,最终生成对应的报表模板文件,并将其保存在服务器中;完全的自由设计,不受表格约束,与企业集成方式简单,只需要一个访问地址即可接入,用户通过设计模块完成报表设计之后,发布在服务器上,即可通过浏览器浏览到最终的报表,此报表可以以url的形式集成到其他的业务系统中;其具有设计快速,发布方便,集成简单的优点;当用户预览报表时,服务器通过解析,计算,渲染等模块来得到实际的报表,以html和flash两种形式展现报表;企业系统仅需集成一个报表访问地址,即可将设计的报表集成到系统中。
具体实施方式:
为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施方式,进一步阐述本发明。
参见图1和图2,本实施例提供的是一种报表快速生成及发布的系统和方法,其运行在网络服务器上,有权限的用户可以随时通过浏览器接入进行报表设计及发布。该系统包括设计和展现两大部分。
设计模块主要由报表设计器组成,拥有大量的报表设计组件,采用条带式布局,通过拖拽组件的方式完成报表整体设计,通过组件的属性更改来完成细节上的处理,最终生成对应的报表模板文件,并将其保存在服务器中。
展现部分包括解析模块,计算模块,渲染模块以及展现模块组成。解析模块用于报表模板文件的解析,解析出其中包含报表组件,及其每一个组件的属性,连接数据库,获取对应的数据;计算模块主要用于组件中表达式和脚本进行计算,如求和,最大值,最小值等等,并且对各个组件的大小位置和布局进行计算;渲染模块根据计算出的组件的具体位置,大小,属性完成组件的实质化收集,重新进行组装;展现模块是将渲染得出的数据展现在页面上,展现模块包含flash 和 html 页面两种展现方式。用户通过设计模块完成报表设计之后,发布在服务器上,即可通过浏览器浏览到最终的报表,此报表可以以url的形式集成到其他的业务系统中。此系统具有设计快速,发布方便,集成简单的特点。
本实施例中,实现报表快速生成及发布的方法,其方法如下:
(1)通过设计器的拖拽组件对报表组件进行布局,设定数据源及数据集,设置组件属性,生成报表模板文件;将模板文件存储在数据库中;
(2)当用户预览报表时,通过解析模块读取报表模板文件并解析,并根据模板文件中数据源及数据集信息到指定的数据库获取数据;
(3)通过计算模块完成各个报表元素的属性值计算;通过渲染模块完成各个报表元素的重新组装和布局;
(4)通过展现模块呈现出最终的报表效果,用户只要获取报表id,就很方便的将自己设计的报表集成到他们的系统中。
两种形式的访问同时还支持报表导出,导出格式包括word,pdf,excel 三种,方便业务人员离线保存报表文件。种形式的访问还支持在线打印,flash精确打印。
为更详细阐述本发明,本实施例的具体方法步骤如下:
第一步:通过报表管理模块打开报表设计器;
报表管理模块是报表服务器提供给用户的访问门户,可以进行报表组和单个报表的新增、修改,删除等操作,还可以对全局数据源进行管理。
对于单独报表,页面管理提供“设计”和“预览”两项功能,点击“设计”按钮,打开报表设计器进行报表设计;点击“预览”按钮,可以观察页面报表效果。
第二步:通过报表设计器设计报表
报表设计器提供的报表组件包括布局组件,数据组件,独立元素组件。
布局组件包括“页眉”、“页脚”,“数据首”,“数据区”,“数据尾”,“分组首”,“分组尾”,“面板”,“表格”。
数据组件包括“数据源连接”,“数据集”,“参数”,“合计”
独立元素组件包括“文本框”,“图片”,“图表”,“交叉表”,“复选框”。
以下是对于三类组件的简单介绍:
A1:布局组件
A101:“页眉”和“页脚”,通常显示文档的附加信息,常用来插入时间、日期、页码、单位名称、微标等。其中,页眉在页面的顶部,页脚在页面的底部。通常页眉也可以添加文档注释等内容。
A102:“数据首”,通常位于“数据区”上方,通常显示数据区的列名,还有其他一些固定文本信息也可以在此展示。
A103:“数据区”,是报表最核心的组件,用于循环展示报表中的各个元素,循环次数依赖于绑定的数据集的条数,纵向扩展显示。
A104:“数据尾”,通常位于“数据区”下方,通常用于展示“合计”或者其他固定的文本信息。
A105:“分组首”,用于分组报表元素字段,分组首中可以设置分组条件,通常为联合表中的某个字段,按照此字段分组,然后数据区逐组展示数据。
A106:“分组尾”,用于分组数据展示完毕之后,显示一些固定的文本信息或者变量信息。
A107: “面板”,单纯的布局组件,可以将报表空余部分进行整体切割划分,在行对其方面有其独特的优势,可以自动伸展和收缩,专为复杂的样式布局而准备。
A108: “表格”,表格组件,是对“文本框”组件的补充,可以迅速插入一个表格已完成排版和布局,插入一次表格,即可形成多个排列整齐的文本框,而且可以对其中的文本框拉伸,别的文本框随之而动,调整方式简单。
B1:数据组件
B101:数据源连接组件,具有新建,删除,编辑功能。数据源分为私有和全局数据源两种,私有数据源为单独报表享有,全局数据源为所有的报表共享使用,全局数据源一次更改,即可影响到所有使用此数据源的报表。
报表的数据源支持多种类型,包括oracle,mysql,sqlserver ,db2,金仓,达梦.
报表为上述每种数据源都提供对应的驱动包。
数据源连接组件还提供了“测试连接”功能,可以通过测试,得知设置的信息是否正确。
B102:数据集组件,具有新增,修改,删除功能。数据集是收集数据信息的主体承担组件,新建数据集对话框中,提供sql查询编写框,输入对应的查询数据,即可浏览到对应字段和数据,同时还支持参数来查询,预览的合适数据的时候,即可保存数据集。
B103:参数组件,具有新增,修改,删除功能。参数组件提供了多种形式的参数类型,包括String,Number,Boolean,datetime 。参数的来源有三种方式,分别是“手工输入”,“列表框”,“数据库”。
B104:合计组件,具有新增,修改,删除功能。合计组件主要提供某一区域的数据提供合计,最大值,最小值,平均值,计数等功能,报表对于这些数据的需求量很大。
C1:独立元素组件
C101:“文本框”组件,作为报表最核心的元素,文本框几乎承担了80%以上的数据展示。文本框的值可以是固定字符串,数据集的某个字段,合计值,参数值,或者是上面几种值的组合表达式,基本上可以获取各类数据。
文本框的属性中,包含对字体的设置,可以设置字体样式,水平,垂直位置,文本格式等,其中“文本格式”包括常规,数字,货币,日期,时间,百分数,布尔值等多种格式。
文本框的属性中,可以对边框进行设置,边框颜色,粗细,样式等。
文本框的属性中,可以设置回填,回填操作是后期客户最主要的操作之一,能够直接更改数据库中对应字段的值,回填属性可以设置回填字段,回填条件等。
文本框的属性中,可以填写执行脚本,执行脚本是用javascript编写,支持此类型的编译,可以让服务器计算更加复杂的程序,大大增加了文本框值获取的灵活性。
文本框的属性中,可以设置布局调整方式,包括支持自动换行,自动宽度,容器高度等,其中设置容器高度之后,整行文本框都会保持一致的高度,有利于排版,自动宽度则是随着文本框内字符的多少而进行横向扩展,自动换行则是随着文本框内字符的多少纵向扩展。
C102:“图片”组件,可以从本地插入一张图片到报表,也可以指定数据集中图片字段到此位置。图片组件的属性中,可以设置放大倍数,透明度、图像旋转度数,长宽比,拉伸,其中选择拉伸,可以让图片填充到整个组件大小,长宽比可以重新修改图片的长宽比例,放大倍数可以放大图片或者缩小图片。
C103: “图表”组件,是报表图形化展示最核心的组件,可以提供柱形图,条形图,折线图,面积图五种图形,并且这几种图形可以两两组合形成双轴图表。图表的X和Y轴与数据集中的字段进行绑定,图形用于展示数值差异,美观而且实用。图表组件可以提供图表联动功能,即点击第一张图表的某个位置,可以展现第二张图表对应的数据。
C104:“交叉表”组件,交叉表是此报表系统专为中国式复杂报表提供的设计组件,能够提供行和列两个方向的同时分组,进行数据统计展现。交叉表还提供了行列方向上的合计功能,统计值可以为合计值,平均值,最小值,最大值,计数值等等。交叉表组件还提供了多维分组方式,即行和列方向上可以更加多个字段进行多层次分组。
C105:“复选框”组件,为勾选类数据提供组件支持。
设计报表分为以下三个过程:
(一)通过布局组件进行整个报表的样式布局。
(二)通过数据组件设置报表获取数据的来源,筛选方式,统计方式。
(三)通过独立元素组件填充报表内容,将数据插入到报表的对应位置上。
(四)通过步骤即可完成报表设计,并且将各个组件记录在报表模板xml文件中。
第三步:通过设计器的预览功能预览报表效果
报表设计完成之后,是需要立即知道实际效果的,直接上线则可能出现较大偏差。报表设计器也提供了预览功能,观看报表最终产生的效果。
报表预览效果的生成通过以下四个模块完成,分别为解析模块,计算模块,渲染模块,展现模块,其中前三个模块都是运行在后台java服务器上,展现模块运行在前台。下面分别对四个模块简要介绍:
解析模块:解析模块首先对报表模板xml文件进行解析,分离出报表包含的各个报表组件,解析过程如下:
1. 从xml文件中,解析顶层元素page;
2. 在page中,解析查找所有的数据源信息,并且建立服务器与对应数据库的连接;
3. 根据数据集信息,报表服务器获取相应的数据;
4. 解析查找所有的布局组件,并生成对应的实例;
5. 在布局组件中,解析查找所有的独立元素组件,诸如文本框,图片等,生成对应的实例,并存储于对应的布局组件实例中。
计算模块:计算模块用于计算报表各组件的大小,位置,属性,实际数值等,主要计算步骤如下:
1. 从page开始,首先对“页眉”,“页脚”的高度进行计算
2. 对“数据首”,“数据尾”,“分组首”,“分组尾”进行计算,这些组件的高度相对固定,计算难度低
3. 对“数据区”进行计算,“数据区”组件通常会包含大量“文本框”组件,并且会依赖于绑定的数据集循环展现其中的文本框,因此,数据区的大小依赖于文本框的大小。
4. 对“文本框”组件进行计算,包含两部分,一是对文本框绑定值的计算,二是对文本框大小的计算。文本框绑定值如果是数据集字段,直接获取即可,如果是表达式,则要送到表达式计算模块计算,如果是脚本,则需要送到脚本计算模块计算;文本框大小依赖于文本框绑定值字符数的大小,字符越多,占用的空间就越大,如果选择“自动宽度”,则会进行横向扩展,如果选择“自动换行”属性,则会进行纵向扩展,大小随之而动。
5. “文本框”不断扩展“数据区”,当“数据区”联合其他布局组件占满一页时,就会产生新的页面,从第一步开始重新计算。
6. 其他独立元素组件通常放在最后计算,计算相对独立,不会影响到其他组件。
渲染模块:渲染模块会产生一个过渡报表实例,此实例可以向html,excel,word等其他形式转化,渲染过程如下:
1、新建过渡报表实例;
2、搜索原有的组件实例,将计算模块计算出的数据赋予对应的组件实例,生成新的组件实例;
3、将新的组件实例插入到过渡报表实例中。
展现模块:展现模块是根据过渡报表实例生成不同的展现方式,有flash,html,world,excel,pdf 等格式的展现方式。其中以html 和 flash 作为最常见的两种在线展现方式,word,excel,pdf 则以离线保存的方式为主。报表设计器中的预览效果就是以flash形式展现的,服务器在将过渡报表的计算结果返回设计器,设计器将过渡报表实例转化为flash形式展现。
第四步:保存报表 ;
设计人员在设计报表时,所使用的每一个报表组件,都会被记录在报表模板xml文件中,报表组件的大小,位置及其他属性都会写入到xml文件中,设计完成之后,预览报表无误,点击保存,系统会将报表模板xml文件保存到数据库中,并产生唯一的一个模板ID。
第五步:快速上线报表;
当业务系统需要集成报表时,只需要将报表访问的url地址写入即可,url中携带报表模板ID参数,访问指定的报表。
报表服务器提供两类浏览效果访问方式,一类是以flash形式展现报表,一类是html形式展现报表。flash形式画面更加精致,打印更准确,但对于浏览器插件有一定依赖,而且占用浏览器内存;html 展现方式则更加灵活,并且支持数据回填。
本发明的具体实施按照图1所示流程进行,下面以某业务系统中的报表设计到上线过程为例,描述该流程中的各步骤。
1、 通过浏览器访问报表管理模块,新建报表;
2、 打开报表设计器,拖拽报表布局组件,设置数据源和数据集,拖拽独立元素组件完成细节设计。
3、 通过报表设计器的预览功能,看报表是否符合预期。
4、 重复步骤2和3,到报表符合预期为止,生成报表模板xml文件,保存报表。
5、 获取报表模板唯一标识ID,拼凑url访问地址。
将url访问地址集成到业务系统中,即可完成集成上线。
本发明有权限的用户通过浏览器即可接入报表设计器,多个用户可以协同工作,来完成报表设计。报表设计器采用良好的flash交互动画操作,设计器包含布局组件,数据组件,独立组件三类组件,分别完成布局,数据设置,细节设计工作,通过各类组件的属性增加更多的动作特效。当用户预览报表时,服务器通过解析,计算,渲染等模块来得到实际的报表,以html和flash两种形式展现报表。企业系统仅需集成一个报表访问地址,即可将设计的报表集成到系统中,。此系统具有设计快速,发布方便,集成简单的特点。
本发明无需安装任何客户端软件,有权限的人员随时通过浏览器访问报表设计器来设计报表,通过拖拽组件来完成精确设计,完全的自由设计,不受表格约束,与企业集成方式简单,只需要一个访问地址即可接入,具有设计简洁,集成简单,快速上线的特点;解决了当前很多报表系统都存在设计界面复杂,设计报表周期长,与企业系统融合困难,上线周期长的问题。并通过更加友好的flash设计器来设计报表,通过url这种简单的方式与企业系统集成,解决了以上企业报表的问题。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。