月末月初,年末年中,一大批报表需求涌来。每到这个时候,都觉得自己的表格技能格外鸡肋,看到任何一个N天精通Excel的字眼都格外敏感。
但是,企业里批量的报表,爆炸的需求,纵使有再高的Excel技能也都招架不住,一张复杂表就能忙到昏天黑地,加班加到心累。这时候恨不得有大神能写个万能脚本,一键搞定报表制作。
当然,万能的代码是没有的,半自助化的报表工具倒有一个——FineReport
这是一个开发人员很常用的web报表工具,使用简单,可以轻松制作各种复杂报表,批量生成同类型报表。像周报月报这种固定报表,做好模板,定时调度可自动生成。
但是,也有人会问,报表样式迥异,很多都很难共用一张模板,需求多了,做模板也很吃力啊。
人啊,总是求懒心切。这里大师兄给大家总结了FineReport制作报表模板的几个技巧,比如复用数据集,复用模板组件等,能大大降低重复工作量。
01
数据集复用
FineReport对数据的操作,是将数据从数据库中提取出来作为“数据集”,然后再用于报表模板的设计和数据的展现集合。这样做的好处是能将不同数据库中的数据直接整合到一起,置于内存的数据处理性能也比较快。
在开发报表时经常会遇到需要复用已有数据集的情况,比如今天提取的一个数据集1个月前提取过。笨办法就是把以前的数据集打开,复制取数的sql语句,然后复制粘贴,虽然也比较费时,但比重新输入要好很多。
但是其他数据集的复用就特别麻烦了,特别是内置数据集。像模板内置数据集原理就是在模板数据集中新建一个类似数据库表的原表,可作为模板的数据源来设计报表。
但是是在原电脑上建立的数据库连接,如果换一台电脑这个链接就会失效,就看不了模板,这时候就可以直接将该模板的数据集定义成内置数据集或者在制作模板的机器上将该模板输出成内置数据集模板,这样该模板就可以在任何电脑上访问了。
往往我们需要重新构建内置数据集,再重新录入数据,可复用性为零,在另一个模板里使用其他模板已有的内置数据集就得重新做一个。除了费时间,再一点就是复用时操作太多容易出错,而且是不易察觉的错误。
这里推荐一个又快又不容易出错的方法——notepad++,它的好处体现在两个方面:
1.可以直接用notepad++打开cpt或者frm(类似于代码的形式),把里面的数据集部分的代码复制到另外一个cpt或者frm里,一步复制粘贴就可以完全无错地复用。
2.还可以一键替换用了很多次的模板参数,不需要自己一个个去改,十分方便。
02
编辑sql优化
FineReport是通过写sql来提取数据的。
一般来说,我们取数都是从其他地方获取测试有效的sql语句粘贴到Finereport中,比较麻烦。而设计器内部的sql编辑器没有智能设置,且显示区域较小,缺乏像navicat等自动联想、自动检测错误等人性化功能,导致开发报表时在设计器内部直接编写sql语句很麻烦,并且Finereport内置的函数和数据库的函数还有所区别。
这个时候就可以安装一款“高级数据库查询”插件,该插件提供了简化sql输入、无缝对接sql可视化编辑工具的能力。
- 支持数据权限管理,方便之余更能兼顾安全;
- 支持语法提示、自动补全(支持补齐字段名)和代码美化,让具有不同sql代码编写习惯的开发者也能便捷地熟悉对方的代码;
- 在sql中加入帆软公式支持;
- 支持可视化的sql builder,傻瓜式操作,通过简单拖拽就能完成sql编写,让没有sql基础的业务人员也能完成简单的sql编写,大大降低了报表开发的门槛。
对比
默认sql编辑窗口:固定大小,代码无法自动美化:
高级数据库查询:可全屏展现,自动美化代码:
03
单元格部分属于复用
他山之石,可以攻玉。很多时候我们能在别的模板中看到喜欢的设计,比如文字配色、背景色、边框设置、条件属性设置、超链效果等等,然后就想复制过来,但是一步步设置比较麻烦,希望能想复制粘贴一样简单地操作就能完成,现有的ctrl+B可复制格式。
但对于扩展、条件属性、超链、控件等不能实现,直接把全部内容和设置直接复制过来还需要再调整,往往我们只想要复制它众多属性中的一个,那么这里推荐使用一款插件——可选择性粘贴,可将单元格的一下部分单独粘贴:
- 元素(插入数据列、普通文本、富文本、公式、图表、子报表、图片、斜线);
- 扩展属性(扩展分享、左父格、上父格、可伸展属性、扩展后排序及排序公式);
- 样式属性(自定义属性、文本格式/字体、单元格样式/边框/背景、对齐、换行、缩进等);
- 形态属性(数据字典、条形码、公式形态、金额线);
- 其他属性(行高列宽调整、插入行策略、分页设置等);
- 控件(文本、文本域、数字、密码、按钮、复选按钮、日期、文件等控件);
- 条件属性(背景、字体、颜色、新值、行高、列宽等条件属性设置);
- 超级链接(网络报表、邮件、网页链接、动态参数、JS脚本等);
- 也可全部粘贴。
粘贴插件详细介绍和下载地址,私信“插件”即可获得
04
决策报表中组件复用
决策报表,是专为解决驾驶舱类报表而开发的。不同于普通报表设计格子式界面,FineReport决策报表采用了画布式操作界面,通过简单的拖拽操作即可帮助用户构建强大、全面的“管理驾驶舱”,在同一个页面整合不同的企业数据,完美的展示企业的各类业务指标,实现数据的多维度分析。决策报表文件的后缀格式是frm。
制作大屏或驾驶舱时,也可以复用已有demo中的整个模块,也可以复用其中的组件。
比如下面这个展示项目阶段及节点时间的模块,实际上使用了好几十个控件叠加起来才可以有这样的显示效果。如果要自己一个一个叠加实现需要花费非常非常多的时间和精力才能做好,而且还需要不断调试组建的大小和相对位置。
但frm里支持对多个组件的同时复制粘贴,并且可以一起放缩大小,保持整体比例和和各组件相对位置不变。
FineReport提供了组件云端共享和本地复用功能。帆软官方将收集到的优秀 demo上传到云端共享中心,用户可根据需要,自行下载自己喜欢的 demo,并应用到自己的决策报表之中,既节省了人力又做出了好看的报表。此外,组件还支持本地复用,对任意选中的组件通过键盘可以进行复制、剪切、粘贴,支持在同一个报表模板内复用, 也支持在不同的报表模板间复用。
最后,一句话总结。对于复杂高频的报表,尤其是企业报表需求,使用专用的报表工具,再掌握一些提高效率的技巧,绝对事半工倍。