又是忙碌的五月呀~~近期接到一个项目,是一家商贸公司需要去采集销售部门的销售业绩据, 以往他们使用Excel表格线下去做报表填报,传统的报表体系效率低,文件杂,汇总难。下级部门上传数据需要以多个表格来上报,上级部门拿到上报的数据后还要手动进行汇总或者分类。对于这种无限重复并且效率低的工作节奏,他们早已厌倦。因为手工采集都所以他们需要有一张自己的工作表。这就导致,在全国的数据管理中,多个地区的工作表的结构是相同的,只是名称不一样。重复建立多张表就造成了资源的浪费,并且不易进行管理和实时更新查看。


如果要避免这种情况,过往的经验告诉我,专业的事情交给专业的工具来做,我们要选择专业的数据填报软件,起到事倍功半的效果, 不再为数据收集而秃头!


在国内的报表领域,有两款好评如潮的产品——帆软旗下的报表产品FineReport,Smartbi旗下的报表工具Spreadsheet。 这两款工具都能实现数据的线上填报整合,但哪款更合适我,我最近也亲自试了下,都各有利弊,以下就是我使用的过程细节对比,提供给有数据采取需求的亲们,供参考~~


两个产品做出来的效果,如下图:

实现过程的差异对比,如下:

1.数据接入

两个平台都支持主流的数据库类型,基本都是可以通过业务库的IP和端口就可以便捷连接到数据库。令人惊喜的是,Spreadsheet的数据库管理机制,可从整个数据源进行表关系、元数据、数据权限进行全局管理。Finereport暂未发现数据库全局管理能力,数据库接入后,只是一个数据链接地址,缺少类似能对整个数据源字段和表关系进行全局管理,后续需要每个数据集都重新定义一次关系,稍微繁琐一些。


Spreadsheet数据库统一对整个数据源字段和表关系进行全局管理管理机制:


2.数据准备

Finereport提供多种数据集处理手段,具有SQL数据集、自助数据集、程序、文件数据集、关联数据等。数据集支持类型很丰富,但是使用起来又比较技术化,适用于熟悉sql的用户。。这个定位比较清晰,这块软件就是面向于 IT人员去使用的。如果不熟悉sql就出门右转了,可以考虑使用spreadsheet,因为这个产品除了支持sql取数,还是支持拖拽勾选的方式取数,不熟悉sql也可以使用

Spreadsheet在取数这块门槛就低很多,不仅有专业的sql取数,也支持业务人员自助勾选字段取数。根据业务的使用习惯,来专门开放给业务用户勾选拖拽字段就能取数并快速生成参数应用于报表中。


Spreadsheet有专为技术人员提供的原生SQL数据集、Java数据集、存储过程数据集等,同时SQL数据集编辑界面可以看见数据库表的信息,如表名、字段名等信息辅助写sql。


3.填报报表开发

两者的开发界面如下图所示,Finereport使用的是“类Excel”的C/S报表设计器,Spreadsheet使用的是“真Excel”的准B/S报表设计器。两者都可以满足常见的复杂报表需求。Spreadsheet基于Excel/WPS的特色来融入BI报表的能力,Finereport使用类Excel的设计器,对于熟悉Excel的小伙伴来说的话,在函数、公式使用在Spreadsheet的Excel设计器更方便。如果使用Finereport需要重新花时间去学习,在丰富度上也略低于Spreadsheet。但整体使用下来,Finereport在整个设计器的功能布局会比较集中和细节做的更连贯一些。


Finereport的类Excel设计器


Spreadsheet真Excel设计器


在制作细节上,也要几点想与大家分享一下

1.拖字段,特别是字段量较大是,Spreadsheet比较友好是可以批量插入名称,不需要一个一个拖拽,对于效率要求的技术控就比较友好了。


2.Spreadsheet继承了单元格细节的灵活性,如同一个单元格的字体支持不同颜色显示,而字体需要Finereport整个单元格进行修改。


3.Finereport无法动态获取数据集(当报表拖字段后,若此时修改数据集名称,报表就没数了)



这一点,大家需要注意一下,如果使用finereport不要轻易改数据集名称,不然像我这次一样,改了数据集后就报错,有点蒙。如果修改,字段需要重新逐个拖拽吧。


4.在公式函数上,Spreadsheet兼容的Excel函数包括但不限于日期时间函数、统计函数、财务函数、文本函数、预测函数等,尤其平时日常用的最多加减乘除、VLOOKUP也可以直接使用。当数据集字段绑定到单元格后,可使用Excel本身的公式、函数进行单元格引用和计算。


Finereport内置系统函数十大类上百种函数,并且分类、使用向导和公式说明上做的比较易用。



5.参数使用:

Finereport的参数使用与smartbi使用过程差别很大。Finereport在做数据集的时候不需要考虑接入参数,是在报表层面进行加入的,加入的步奏大致可以分为以下几步

  • 定义参数:设置参数名称,添加参数,根据实际应用场景的需要选择不同类型的参数。


  • 参数添加控件:控件是参数实现查询的载体,选择控件类型,通过将控件和参数绑定,实现在控件中输入参数值,能够过滤并查询出用户想要查看的数据。


  • 设置参数来源,这里叫做数字字典:

最后需要过滤的字段,需要设置与该控件参数绑定,从而实现参数切换时,数据进行实时过滤


Spreadsheet的参数使用,相比而言就简洁一些,是在数据集里面加入参数,当报表使用带有参数的数据集,变可直接继承使用。

参数的编辑界面,支持写sql,直接拖字段,静态列表,函数这四种类型

参数排版,单元格引用,参数默认值都可以在报表设计器“参数设置”栏目完成


6.填报功能设置

两者都可以满足常见的数据填报场景。Finereport填报校验配置项丰富些,并且将回写规则与填报属性两个功能合二为一进行设置,Spreadsheet需要分别设置,对于没有现成的校验配置项也可以个性化去编写表达式进行扩展。


Finereport填报设置:FR有14种类型参数控件,并且针对每种组件都有相应的设置项(日期控件,可以设置起始和截止日期,文件控件:可以设置是否允许一次上传多个文件)


Finereport校验功能,每种控件都有数据检验类型,且内置检验规则比较丰富(比如身份证、电话、邮件等),也可以自定义正则表达式和js检验。 还支持设置提交条件(过滤掉不符合条件数据,其它的正常提交,不会阻止条件过程)。



有专门的按钮和背景等页面调整设置


Spreadsheet的填报设置,与finereport类似的需要设置单元格的填报数据类型以及如何与数据库进行匹配(即回写规则设置)。另外spreadsheet支持不同用户填报同一张报表数据,可以按照部门、区域、层次等来控制用户填报数据的权限,且填报和浏览权限可以分开单独设置



由于本次开发这个项目采集的数据是销售对于76种产品的在12个月的销售目标,所以一次性采集的数据比较多,如果让销售逐个去填写会比较费劲就有76*12条数据了,spreadsheet还有这个批量回写的功能,对于一次性要填写大量数据的场景比较友好~



4.发布使用

两个产品的发布流程稍有不同,实现效果基本一致。Spreadsheet是在设计器端点击发布后,回到web端可以在保存的目录下可以打开该资源。


Finereport在设计器端发布后,需要回到web管理平台进行挂载模板进行查看。

总结

使用了两个产品来做同一个多维度的填报报表,这两个产品的差别不是很大,都能实现最终的效果。

两者各有所长。Finereport开发细节上更友好,功能细节更丰富和完善。而Spreadsheet在数据准备手段更灵活,就算不会sql也能玩得动,并且如果你习惯用Excel的话使用Spreadsheet会更容易上手。