我是一个毕业两年的90后,毕业后在一个主营粮食交易的企业工作,岗位的主要工作就是制作各类数据统计报表、台账、数据图表等等,各类的日报,每天都要做一遍,此外还有什么周报月报……
之前在这个岗位的同事,每天至少要花好几个小时去折腾Excel,用数据透视表、vlookup等等各类函数去做出一份有3000多个数据的日报。如果领导临时安排什么工作的话,那就要加班从无穷无尽的数据里找领导要的东西了。
我刚接手工作时,拿到一个70多兆的Excel文件,每次用公司发的破电脑打开就需要小二十分钟,里面存着我们近十年的采购的每一车物品的详细信息……然后里面的数据格式还都是混乱的,打个比方,比如我们有个供货商全名叫:ABCD有限责任公司,那么这个Excel中会存有:AB公司、AB有限公司、CD有限责任公司、CD责任有限公司、ACBD有限公司......不用想就知道数据清洗有多难了
更令人恐惧的是每天的日报,定期的周报、月报,要是遇上季末,周报、日报、月报、季报全撞一起,简直做表做到想自杀,辛辛苦苦加班赶出来的表,老板也不一定看
就这样,经历了噩梦般的几个月……终于在有一天,我知道了一个词:报表自动化
什么是自动化报表?
先理解一下什么是自动化,比方说以前我们造路铺砖都是用人工一块一块的铺上去,而现在都是用机器自动捡砖、铺砖,不需要人力劳动了,这就是自动化。报表自动化,顾名思义就是人不用做表,表格自动生成。就拿日报、季报来说,每天、每月的数据都需要更新,日报、月报就要重复做,如果可以通过工具或代码自动生成周报、日报,不需要人反复做表,这就是报表自动化。报表自动化的目的在于简化工作流程,减少人工介入,节省工作时间,提高工作效率。
怎么实现报表自动化
要想实现报表自动化,关键要解决两个问题,一是数据自动录入,而是报表模版自动呈现。
数据分析高手一般会选择python实现,但是对代码能力要求太高,我只能放弃,网上看别人用excel透视表做的自动化报表模版也不错,但excel没办法解决我的数据连接问题,七八个子公司的数据全叫交过来,数据口径不一,最后还是要手动导入。我又找人打听,最后发现了一个报表制作神器——FineReport
先放一张我用FineReport做的自动化报表模版,下面再给大家说说我是如何用它实现报表自动化的
取数不用愁
上面说了,我们公司有N个子公司,要月度、季度总结的时候,就要将各个子公司的销售数据先单独分析,再合并分析公司整体销售情况,所有的数据都分散在各自公司的数据系统中,查询数据需要进入不同的系统。要想把所有的数据呈现到一张表里去,不用想就知道取数工作有多么艰难。
而FineReport可以直连数据库,轻松解决取数的问题
FineReport 是纯 java 软件,跨平台兼容性很好,可以和各类业务系统进行集成。连接数据源的方式也很多,可以通过 JDBC 的方式直接连接数据库,或者通过 JNDI 的方式与应用服务器共享数据连接,也支持通过 JCO 连接 SAP 系统,需要数据时可以直接从数据库中取数,不用像Excel那样,手动从数据库中导出数据,再复制粘贴到表格中。
报表模版制作
解决了数据链接的问题,接下来就是报表模板制作,以前做表格都是用的Excel, 刚下载FineReport的时候担心学不会,但接触之后发现,它的操作其实很简单,不需要写代码,大部分的操作拖拽就可以完成。普通报表模式的界面和Excel差不多,只不过制表原理不一样:excel是对单个的单元格高进行处理,然后再下拉到数据列,而FineReport的单元格绑定的是数据字段,直接对数据字段操作
Finereport的自动化制表步骤如下:
下面做个简单的周报演示一下过程,效果图如下,选择日期框里的时间,点击查询后就可以自动跳转到当周的订单数据
第一步:建立数据链接
开设计器,在服务器>定义数据连接中定义需要连接的数据库,即可建立需要的数据连接,如下图所示:
第二步:新建数据集,报表样式设计
新建数据集,过 SQL 查询语句从连接的数据库中取数,然后设计器单元格中设计好表格样式,把数据字段拖拽到单元格中,设置好扩展关系
第三步:定义时间参数
订单明细表做好了,要生成周报,就是要对订单中的日期进行筛选,在FineReport中采用的是参数过滤的方法,把表格中需要进行筛选的字段添加参数,然后给字段相应的数据格添加过滤条件,就可以筛选出数据
我们给模版添加一个日期参数 Date ,然后把参数添加到参数面板中,把参数控件类型为日期型:
第四步:设置过滤条件
我们要对订购日期进行筛选,因此给订购日期字段所在的单元格添加过滤条件:
这样就设置好了,点击预览,一张自动化周报就做完了,可以一键输出成pdf、excel、word、图片等多个格式,还能直接邮件分享给领导
动态报表模版
上面的例子只是单个订单明细表周报,但是在实际工作中,老板想看的远远不止这一些,他可能想看地区纬度下的销售情况、某个产品的销售情况、甚至是某个门店的某个月的销售情况,这时候怎么办,一张一张做表?不,直接用FineReport做个动态报表模版,各个图表组件之间可以联动,钻取,老板想看什么都在一张报表模版中搞定:
刚才我们做订单表周报是用的是FineReport的普通报表模式,它还有一个更牛逼的决策报表模式,普通报表和excel差不多,是格子式的设计界面,而决策报表采用的是画布式的设计界面,就像一个空白的画板,你想要用哪个报表组件,就把它拖拽到画板中,然后定义各个组件数据来源,图表组件数据即可来源于数据集,也可来源于单元格。
可视化大屏
除了满足一般的自动化报表需求之外,还有一个更厉害的功能,也是最能装逼的功能,就是做可视化大屏,用Finereport的决策报表模式,可以随意布局图表组件,可以在一个页面中整合不同业务数据,展示公司的各类业务指标,多维度分析数据,比如下面的销售管理驾驶舱,老板通过一张大屏就能看到公司所有重要销售指标,掌握公司的销售情况:
总结
学会了自动化报表,现在我的周报、月报、日报只需要一键刷新就能生成,每天也有了更多的时间处理新的需求,去探索分析异常业务情况,还为公司制作了各类业务管理驾驶舱,慢慢的,我从一个不起眼的报表搬运工成为了真正的数据分析师,也渐渐找到了工作的价值。
评论或者私信我“报表”,即可获得工具地址~