当前位置: 代码迷 >> 报表 >> 一种简略的小型企业报表实现方式
  详细解决方案

一种简略的小型企业报表实现方式

热度:10553   发布时间:2013-02-26 00:00:00.0
一种简单的小型企业报表实现方式

先说下背景吧:

公司为电子商务网站,所以商务部门经常会进行数据分析,而我们这边主要是做开发,也没有专门负责数据的分析的人员,所以经常我会兼职担当报表输出人员,时间一长,商务部门领导也闲麻烦,希望有自动发报表的功能,其实装个BI系统什么的也挺快的,或者有ERP系统也行,但是领导要求越快越好,原来是想用一些开源的报表系统实现,如SpagoBI、Reportico等等。不过上手太慢,同时开发起来也麻烦,最后我就想用最简单的方式实现吧,也就是所谓的小米加步枪嘞。

软件说明:

a. 闲置的公司机器一台,centos 6.5 系统。通过ssh隧道,直接在本地机器上连接到远程数据库上:

/usr/bin/autossh -M 0 -f -NCPf -i /usr/bin/auth_key root@remote -p22 -L 3399:remote:3306

上面remote为远程机器、auth_key为认证key,具体的可以百度一下ssh映射端口。


通过这样的方式我就可以直接连接到远程的数据库上面咯。


b. thinkphp框架

因为一直用习惯了它,所以就用它来做一些业务处理。


c. 其它PHP框架,暂时用到了 pChart2.1.3 及 PHPExcel

http://www.pchart.net/

http://phpexcel.codeplex.com/


d. wkhtmltopdf,将html转换成pdf,解决了中文乱码问题。之前之所以不用开源的原因就是中文乱码处理起来麻烦。而没选择php之类转pdf的功能原因是因为速度太慢太慢了。然后就用它了。

http://code.google.com/p/wkhtmltopdf/


e. 一些shell脚本及centos的crontab

基本上用以上的工具就搞定了。


处理流程:

第一步. 针对pdf报表,我会直接生成HTML页面,然后使用wkhtmltopdf转换成pdf。而对excel表格,我直接用linux下curl命令,使用php生成文件。

第二步. 通过crontab发送各个报表


不足之处:

需要手工配置,涉及内容较多,维护较麻烦。


方便之处:

因为是用php实现,修改起来简单,尤其是pdf是基于html转换来的,所以修改起来也很简单,比使用iReport做模板方便,美观。


当然这种方案只是应对突发情况而不得不为之的。不过运行了一个月了,还比较良好,对一些新的报表要求,也能很快完工。所以对创业公司,或者小规模的电子商务公司,这种使用免费的工具搭建报表,也是一种可取之法。如有朋友有兴趣,可基于此进行深入整合,使用如java来做一些定时处理等等,功能将会更加完善。


创建PDF的shell脚本:

#!/bin/bashpdf_name=PDF_$(date -d"1 day ago" +'%d_%m_%Y')".pdf"pdf_path=/data/home/website2/htdocs/bi/pdfs/pdf_log=$pdf_path"create_"$(date +%Y%m).logpdf_src="http://192.168.1.6/bi/index.php?m=Index&a=bi"######### Start ###########if [ -f $pdf_path$pdf_name ]then  rm -rf $pdf_path$pdf_name  echo "######### REMOVE PDF --> "$pdf_name" : "$(date +'%Y-%m-%d %H:%M:%S') >> $pdf_logfi/usr/bin/wkhtmltopdf $pdf_src $pdf_path$pdf_nameecho "######### Create PDF --> "$pdf_name" : "$(date +'%Y-%m-%d %H:%M:%S') >> $pdf_log######### End ###########

创建Excel的shell脚本:

#!/bin/bashexcel_path=/data/home/website2/htdocs/bi/excel/reports/excel_log=$excel_path"create_"$(date +%Y%m).logexcel_src_1="http://192.168.1.6/bi/excel/excel01.php"excel_src_2="http://192.168.1.6/bi/excel/excel02.php"######### Start ###########curl $excel_src_1 >> $excel_logsleep 2scurl $excel_src_2 >> $excel_log######### End ###########





  相关解决方案