主流报表引擎普遍缺陷问题分析
2007-12-19 16:37
507 查看
近期由于公司项目需要,准备采购第三方的报表设计工具,借此机会,我对部分主流的报表工具进行了了解与试用,在试用过程中,对目前的报表工具的特点及优缺点进行了分析。
从功能上看,报表设计器分为条带分区式及Excel网格模式。由于中国式复杂报表的应用需求,对行列交叉表要有较强的支持,这次报表选型主要重点在国内软件商开发的采用Excel模式的报表引擎。
l 润乾公司的报表引擎基于J2EE架构,使用类Excel设计模式,功能强大,其设计工具JavaForm实现,感觉不是太好使用。
l 北京久其公司新退出的ezReport同样采用J2EE架构,功能也很不错,设计器采用Dephi实现,使用方便,特别是对展现分组、分列控制局域的可视化描述,非常直观。
l 方成公司的E表应该说是最有特色的。其采用纯B/S模式的报表设计器,无需嵌入任何ActiveX控件,就可以实现在IE浏览器中实现报表设计,操作稍有不便,但操作效率没有想象的那么低。
l 其他的如Grid++Report,采用COM组件模式,但对多数据源的支持能力较差,没有仔细研究。
应该说国内报表引擎厂商针对国内的实际情况,进行了深入的设计与开发,功能上各有特点,能满足大部分的需求。但在具体的应用上,还存在一些普遍问题,拿出来与大家进行交流:
1.对动态层次汇总的支持
目前在ERP或其他管理系统中,有不少层次关系的数据,比如:组织机构分解(OBS)、工作任务分解(WBS),这些数据的特点是实现层次分解,层次的数量不定,一般在对底层单元有较多的业务定义。比如:OBS最底层的组织(部门)上挂接有人员,WBS最底层(作业)上有作业的开始时间、结束时间、工作量等。在实际工作中,需要对这些业务信息按分类层次进行汇总统计,这就要求实现对层次汇总的支持。
典型的例子如表所示:
要实现的报表效果如下:
另有文章介绍这类数据的统计方法。
2.对动态层次分组的支持
这个与上面的类似,当有层次关系的分类时,需要分类进行统计,并按层次进行分组汇总,目前的报表一般不能实现。需求如下图所示:
报表格式如下:
3.Web展现时行列锁定
支持B/S的报表一般使用两种方式实现Web展现,ActiveX模式或直接的HTML展现模式。采用HTML展现时,一般没有实现对表格行列锁定的支持,或有的部分支持表头固定功能。这个功能实现比较简单(实现方式另有文章进行介绍),但对于用户的好处是显而易见的,对大数据量的交叉表,或年度、月度分列表,当跨度长时(如:12个月分列),就不能在一个页面全部展现,而如果不使用类似Excel的行、列固定功能,后面的数据就无法直观查询与展现,也就是很多用户宁愿把数据导出到Excel中,进行行列处理后再查看的原因。
以上问题,只是这几天在报表引擎选型过程中粗略分析后发现的报表引擎的共性问题,不当之处,还请多批评指正。
从功能上看,报表设计器分为条带分区式及Excel网格模式。由于中国式复杂报表的应用需求,对行列交叉表要有较强的支持,这次报表选型主要重点在国内软件商开发的采用Excel模式的报表引擎。
l 润乾公司的报表引擎基于J2EE架构,使用类Excel设计模式,功能强大,其设计工具JavaForm实现,感觉不是太好使用。
l 北京久其公司新退出的ezReport同样采用J2EE架构,功能也很不错,设计器采用Dephi实现,使用方便,特别是对展现分组、分列控制局域的可视化描述,非常直观。
l 方成公司的E表应该说是最有特色的。其采用纯B/S模式的报表设计器,无需嵌入任何ActiveX控件,就可以实现在IE浏览器中实现报表设计,操作稍有不便,但操作效率没有想象的那么低。
l 其他的如Grid++Report,采用COM组件模式,但对多数据源的支持能力较差,没有仔细研究。
应该说国内报表引擎厂商针对国内的实际情况,进行了深入的设计与开发,功能上各有特点,能满足大部分的需求。但在具体的应用上,还存在一些普遍问题,拿出来与大家进行交流:
1.对动态层次汇总的支持
目前在ERP或其他管理系统中,有不少层次关系的数据,比如:组织机构分解(OBS)、工作任务分解(WBS),这些数据的特点是实现层次分解,层次的数量不定,一般在对底层单元有较多的业务定义。比如:OBS最底层的组织(部门)上挂接有人员,WBS最底层(作业)上有作业的开始时间、结束时间、工作量等。在实际工作中,需要对这些业务信息按分类层次进行汇总统计,这就要求实现对层次汇总的支持。
典型的例子如表所示:
[align=center]序号[/align] | [align=left]编码[/align] | [align=left]名称[/align] | [align=left]层次[/align] | [align=left]单价[/align] | [align=left]数量[/align] | [align=left]备注[/align] |
[align=right]1[/align] | [align=left]1[/align] | [align=left]总价项目[/align] | [align=right]1[/align] | [align=left] [/align] | [align=left] [/align] | [align=left] [/align] |
[align=right]2[/align] | [align=left]1.1[/align] | [align=left]进场准备[/align] | [align=right]2[/align] | [align=left] [/align] | [align=left] [/align] | [align=left] [/align] |
[align=right]3[/align] | [align=left]1.1.1[/align] | [align=left]水准备[/align] | [align=right]3[/align] | [align=right]10[/align] | [align=right]120[/align] | [align=left]明细项[/align] |
[align=right]4[/align] | [align=left]1.1.2[/align] | [align=left]电准备[/align] | [align=right]3[/align] | [align=left] [/align] | [align=left] [/align] | [align=left] [/align] |
[align=right]5[/align] | [align=left]1.1.2.1[/align] | [align=left]后方电准备[/align] | [align=right]4[/align] | [align=right]30[/align] | [align=right]100[/align] | [align=left]明细项[/align] |
[align=right]6[/align] | [align=left]1.1.2.2[/align] | [align=left]前方电准备[/align] | [align=right]4[/align] | [align=right]20[/align] | [align=right]200[/align] | [align=left]明细项[/align] |
[align=right]7[/align] | [align=left]1.1.3[/align] | [align=left]交通准备[/align] | [align=right]3[/align] | [align=right]10[/align] | [align=right]100[/align] | [align=left]明细项[/align] |
[align=right]8[/align] | [align=left]1.2[/align] | [align=left]厂房设计[/align] | [align=right]2[/align] | [align=right]14[/align] | [align=right]300[/align] | [align=left]明细项[/align] |
[align=right]9[/align] | [align=left]1.3[/align] | [align=left]厂房布置[/align] | [align=right]2[/align] | [align=right]19[/align] | [align=right]400[/align] | [align=left]明细项[/align] |
[align=right]10[/align] | [align=left]2[/align] | [align=left]主体项目[/align] | [align=right]1[/align] | [align=left] [/align] | [align=left] [/align] | [align=left] [/align] |
[align=right]11[/align] | [align=left]1.2[/align] | [align=left]混凝土浇筑[/align] | [align=right]2[/align] | [align=right]60[/align] | [align=right]100[/align] | [align=left]明细项[/align] |
[align=left] [/align] | [align=center]注意:只有明细项目才有单价、数量,明细项目所在的层次随机[/align] |
[align=left]序号[/align] | [align=left]编码[/align] | [align=left]名称[/align] | [align=left]单价[/align] | [align=left]数量[/align] | [align=left]复价[/align] |
[align=right]1[/align] | [align=left]1[/align] | [align=left]总价项目[/align] | [align=left] [/align] | [align=left] [/align] | [align=right]21000[/align] |
[align=right]2[/align] | [align=left]1.1[/align] | [align=left]进场准备[/align] | [align=left] [/align] | [align=left] [/align] | [align=right]9200[/align] |
[align=right]3[/align] | [align=left]1.1.1[/align] | [align=left]水准备[/align] | [align=right]10[/align] | [align=right]120[/align] | [align=right]1200[/align] |
[align=right]4[/align] | [align=left]1.1.2[/align] | [align=left]电准备[/align] | [align=left] [/align] | [align=left] [/align] | [align=right]7000[/align] |
[align=right]5[/align] | [align=left]1.1.2.1[/align] | [align=left]后方电准备[/align] | [align=right]30[/align] | [align=right]100[/align] | [align=right]3000[/align] |
[align=right]6[/align] | [align=left]1.1.2.2[/align] | [align=left]前方电准备[/align] | [align=right]20[/align] | [align=right]200[/align] | [align=right]4000[/align] |
[align=right]7[/align] | [align=left]1.1.3[/align] | [align=left]交通准备[/align] | [align=right]10[/align] | [align=right]100[/align] | [align=right]1000[/align] |
[align=right]8[/align] | [align=left]1.2[/align] | [align=left]厂房设计[/align] | [align=right]14[/align] | [align=right]300[/align] | [align=right]4200[/align] |
[align=right]9[/align] | [align=left]1.3[/align] | [align=left]厂房布置[/align] | [align=right]19[/align] | [align=right]400[/align] | [align=right]7600[/align] |
[align=right]10[/align] | [align=left]2[/align] | [align=left]主体项目[/align] | [align=left] [/align] | [align=left] [/align] | [align=right]6000[/align] |
[align=right]11[/align] | [align=left]1.2[/align] | [align=left]混凝土浇筑[/align] | [align=right]60[/align] | [align=right]100[/align] | [align=right]6000[/align] |
[align=center]合计[/align] | [align=left] [/align] | [align=left] [/align] | [align=right]27000[/align] |
2.对动态层次分组的支持
这个与上面的类似,当有层次关系的分类时,需要分类进行统计,并按层次进行分组汇总,目前的报表一般不能实现。需求如下图所示:
[align=left]序号[/align] | [align=left]名称[/align] |
[align=left]1[/align] | [align=left]钢材[/align] |
[align=left]1.1[/align] | [align=left]一类钢材[/align] |
[align=left]1.2[/align] | [align=left]二类钢材[/align] |
[align=left]1.2.1[/align] | [align=left]螺纹钢[/align] |
[align=left]1.2.2[/align] | [align=left]圆钢[/align] |
[align=center]月份[/align] | [align=center]钢材[/align] | |||||||||
[align=center]一类钢材[/align] | [align=center]二类钢材[/align] | [align=center]合计[/align] | ||||||||
[align=center]螺纹钢[/align] | [align=center]圆钢[/align] | [align=center]小计[/align] | ||||||||
[align=center]数量[/align] | [align=center]金额[/align] | [align=center]数量[/align] | [align=center]金额[/align] | [align=center]数量[/align] | [align=center]金额[/align] | [align=center]数量[/align] | [align=center]金额[/align] | [align=center]数量[/align] | [align=center]金额[/align] | |
[align=left]5月[/align] | [align=right]10[/align] | [align=right]100[/align] | [align=right]50[/align] | [align=right]90[/align] | [align=right]190[/align] | [align=right]100[/align] | [align=right]240[/align] | [align=right]190[/align] | [align=right]250[/align] | [align=right]290[/align] |
[align=left]6月[/align] | [align=right]10[/align] | [align=right]100[/align] | [align=right]50[/align] | [align=right]90[/align] | [align=right]190[/align] | [align=right]100[/align] | [align=right]240[/align] | [align=right]190[/align] | [align=right]250[/align] | [align=right]290[/align] |
[align=left]7月[/align] | [align=right]10[/align] | [align=right]100[/align] | [align=right]50[/align] | [align=right]90[/align] | [align=right]190[/align] | [align=right]100[/align] | [align=right]240[/align] | [align=right]190[/align] | [align=right]250[/align] | [align=right]290[/align] |
支持B/S的报表一般使用两种方式实现Web展现,ActiveX模式或直接的HTML展现模式。采用HTML展现时,一般没有实现对表格行列锁定的支持,或有的部分支持表头固定功能。这个功能实现比较简单(实现方式另有文章进行介绍),但对于用户的好处是显而易见的,对大数据量的交叉表,或年度、月度分列表,当跨度长时(如:12个月分列),就不能在一个页面全部展现,而如果不使用类似Excel的行、列固定功能,后面的数据就无法直观查询与展现,也就是很多用户宁愿把数据导出到Excel中,进行行列处理后再查看的原因。
以上问题,只是这几天在报表引擎选型过程中粗略分析后发现的报表引擎的共性问题,不当之处,还请多批评指正。
相关文章推荐
- 《百度数据仓库体系》主要的概述了百度大数据问题、百度数据仓库产品、百度大数据多维分析和报表引擎产品等
- SQL Report Builder 报表里面的常见问题分析
- 水晶报表图片不显示两种问题分析及解决方法
- 各种主流浏览器内核引擎的对比分析
- 当前企业财务报表分析存在的问题
- 4款主流的WPF报表控件对比与分析
- ASP环境中reportviewer报表(SSRS)运行速度慢的问题分析与优化
- 水晶报表图片不显示两种问题分析及解决方法
- 临床试验的统计报表问题:四格表指标统计分析报表的sas宏程序
- 主流Flash物理引擎分析
- 主流游戏引擎的详细比较和选择分析 - 优选澎湃动力 - 天天飞车游戏引擎选型
- 主流HTML5游戏开发引擎的分析和对比
- asp.net模板引擎Razor中cacheName的问题分析
- javaweb基于内容的图片搜索引擎(5)_问题的分析与后话
- 数据集市层——论为什么随着技术分析的深入,决策数据报表问题越来越多
- 总结分析LED照明灯具行业存在的几点普遍问题
- 一个Web报表项目的性能分析和优化实践(二):MySQL数据库连接不够用(TooManyConnections)问题的一次分析和解决案例
- 主流杀毒软件引擎分析
- asp.net模板引擎Razor中cacheName的问题分析
- 主流游戏引擎分析 【端游 、页游 、手游 解析】