Advertisement

python开源报表系统详细操作流程_手把手教你实现自动化报表系统

阅读量:

今天给大家安利一套自动化报表的实现过程。

说到报表,大家脑海里一定浮现了各种高大上的财务报表,不管他们如何实现的,本文却要教你实现自己的报表系统。对于土豪公司来说,这些都是小case,因为商业的工具平台挺多的,选的都头疼。对于小企业,如果不想花大价钱购入一套产品,那么可以选择开源工具,另外花两周时间学会报表设计,花两周时间搭建环境,花两周时间研究脚本,就可以实现自动化出报表了。

BIRT开源项目

可以说,从Boss指示要实现报表自动化开始,就让我费了不少脑经,简直折磨人,直到我发现了BIRT项目,才看到了一丝曙光。

BIRT全称Business Intelligence and Reporting Tools,主要面向那些基于Java开发的平台或客户端,提供报表接口,实现智能化报表系统。看到这,你是不是觉得没希望了,我不会Java开发啊,会Java的人哪里招?

别怕,不会Java关系不大,只要你懂Linux和Shell脚本编程,再多一点点:你会点儿Python那就更好了——BIRT提供了一套工具(BIRT Runtime),可以在shell环境下用命令行方式生成报表。目前BIRT最新版本是4.7.0,案例中使用的是4.6.0。Eclipse BIRT Project​download.eclipse.org

系统简单架构

使用开源工具,系统本身并不是十分复杂,下面是一个简单的架构图:

可以看到,实现这一套方案,需要:BIRT Runtime工具及JDK,用于根据模板生成最终的报表文件;

BIRT数据库,建议MySQL,用于存储报表数据;

数据同步客户端,用于从源数据库抽取需要的报表数据;

报表模板设计工具,用于设计报表模板。

环境准备

接下来看看,需要准备哪些环境及版本要求,当然你可以在其他环境下尝试,毕竟各个节点环境的依懒性并不是很大。MySQL数据库服务器:REDHAT 6.5,MySQL-Community 5.7,根据你的数据规模选择CPU、内存、磁盘空间等;BIRT Runtime服务器:REDHAT 6.5,MySQL JDBC驱动,JDK1.8;

数据同步工具:Windows 7,SQLyog工具,如果数据源是Oracle或者其他数据库,你还需要安装相应的Oracle客户端和其他数据库客户端;

BIRT模板设计:Windows 7,Eclipse for Birt,MySQL JDBC驱动;

系统安装部署

BIRT MySQL数据库的安装

MySQL数据库社区版安装过程在此不赘述,安装完毕后,创建用户和数据库,以便后续连接使用:

mysql> create user 'birt'@'%' identified by {password};

mysql> create database birt DEFAULT CHARACTER SET utf8;

mysql> grant all on birt.* to 'birt'@'%';

BIRT Runtime安装部署下载java 8(jdk1.8.0_25及以上均可),文件jdk-8u25-linux-x64.gz

解压并配置PATH

#cd / && mkdir java8

#cd java8 && tar xvf jdk-8u25-linux-x64.gz

#vi /etc/profile添加:

export PATH=/java8/jdk1.8.0_25/bin:$PATH

#source /etc/profile

3. 下载birt-runtime-4.6.0-20160607.tar.gz及MySQL JDBC驱动mysql-connector-java-5.1.38.jar

安装BIRT Runtime并配置

#cd / && mkdir birt

#cd /birt && tar xvf birt-runtime-4.6.0-20160607.tar.gz

#vi /etc/profile添加:

export BIRT_HOME=/birt

#source /etc/profile

#cd /birt/ReportEngine/lib

#cp mysql-connector-java-5.1.38.jar .

#chmod 777 mysql-connector-java-5.1.38.jar

注:runtime报SSL相关错误时,请删除/birt/ReportEngine/lib /org.eclipse.birt.runtime_4.6.0-20160607.jar包中 ECLIPSE_.RSA和 ECLIPSE_.SF文件

验证,正常可以生成报表PDF文件

#cd /birt/ReportEngine

#./genReport.sh -f pdf -o .pdf -F .properties .rptdesign

数据同步客户端SQLyog及Oracle源数据安装配置下载并安装SQLyog 64位windows版本

打开SQLyog配置连接,如下图所示:

3. 安装Oracle 11g R2 Client软件,安装时必须选择管理员模式以便安装所有组件。用于提供Oracle ODBC驱动。

4. 配置定时导入外部数据。点击“高级工具”——“导入外部数据”向导

选择“开始新工作”,点击下一步

选中“任何ODBC数据源”,继续选择”文件DSN“——”建立新的DSN“向导

选择”文件数据源(与机器无关)”,点击下一步

若是Oracle数据库,则选择Oracle驱动,点击下一步

保存为dsn文件,输入文件名称,点击保存

保存后,在“输入数据源凭据”输入Oracle的用户名和密码,点击下一步

在此处选择需要导入的目的MySQL数据库(即BIRT数据库),点击下一步

选择“用一个查询语句指定传送的数据”,点击下一步

根据要导入的数据,输入SQL查询语句(这里就需要你根据需求编写好SQL语句获取相应的数据),点击下一步

根据查询语句返回的结果,勾选“Result“,在”Destination“栏选择目标表名,然后点击”Advanced“

根据导入数据的特性,对于无需日期过滤的较小表,建议选择”删除并重新创建“;对于使用日期等字段过滤的较大表数据,建议选择”导入到既存数据表“,并选择”保持目标数据“,然后点击确认,点击下一步

勾选”发送错误时退出“,点击下一步

勾选”立刻运行“则本次数据立即同步,勾选”保持选项“——”保存计划“,点击下一步

在”指定任务文件“输入保存的工作名称,点击完成

弹出任务计划配置对话框,在”日程安排“中新建定时任务,设定执行时间,点击确定即可

Eclipse for Birt的使用

要想得到最终的报表结果,需要Eclipse for Birt来设计报表模板,限于篇幅,这里不讲Eclipse for Birt怎么用,大家可以自己去学习研究下吧。

如何自动化

这里就真正是你发挥shell编程、Python编程的时候了。正如上面提到Birt可以用这样一条命令生成报表:

./genReport.sh -f pdf -o .pdf -F .properties .rptdesign

说明:

-f 表示用什么格式,目前命令行仅能生成pdf格式;

-o 表示报表输出文件名称;

-F 表示报表的一些参数从此文件获得;

最后跟着的是报表模板文件的名称,通常是以.rptdesign结尾的文件。

参数.properties文件格式以=形式存在,每行一个参数,如:

dbuser=birt

dbpass=

dburl=jdbc:mysql://:/birt

be=7

...

使用参数文件的好处是:可以灵活调整报表的内容和数据等,而不用每次都去修改模板文件。

当数据、模板、参数文件都准备妥当的时候,就可以准备类似crtReport.sh和sendmail.py的脚本并结合Linux的cron定时任务来实现自动生成报表并邮件发送(Python比较好实现高级功能的邮件发送),且要注意数据同步和定时生成报表的时间一定要错开,以免数据未同步就开始生成报表。所以crtReport.sh和sendmail.py里面的内容,在此就不发出了,各位可以自己研究开发。通过自己编写脚本,大家会学到不少东西:)

全部评论 (0)

还没有任何评论哟~