注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

郁夫的博客

我爱你们,只是你们不知道!

 
 
 

日志

 
 
 
 

Django使用jasper report生成报表 - 转  

2011-02-22 14:10:03|  分类: Django |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Django使用jasper report生成报表

2008-8-11

chenyehao@hotmail.com

我们都善于东拼西凑,写最少的代码来达到目的。这次有一个做报表的需要,怎么用我掌握的工具,来解决这个问题。

方案如下。

Web还是用django,django可以解决用户认证的问题。

报表用jasper report,jasper report是很好的报表制作工具,能够生成pdf,html,excel等格式,而且有iReport这个图形界面,最重要的,jasper report是免费的。

Jasper report是java的工具,需要由java来调用,为此又花时间复习了java的语法。

应用由三部分组成

django

一个java工具,使用jasper report的模板生成pdf报表

iReport来制作报表模板

 

流程是这样

1. 用户使用浏览器访问django的站点,在网页上填写jasper报表需要的参数

clip_image002

2. django接收到post请求,在本地生成一个json数据包,里面包含了jasper 报表运行的所有参数,通过命令行调用java工具,得到一个pdf文件

3. 重定向浏览器到刚刚生成的pdf文件,用户在浏览器里面看到结果,这时用户可以打印报表

clip_image004

下面介绍django和java的接口。

Django生成一个json文件,用django自带的simplejson包就可以,生成的文件如下。

{

"jdbc_url": "jdbc:postgresql://localhost/vod?user=postgres&password=postgres",

"params": {"artist_id": "%陈%"},

"jasper": "D:/djangoapp/vodweb/media\\jasper\\classic_vod.jasper",

"pdf_file": "D:/djangoapp/vodweb/media\\pdf\\4a376ac0-6514-11dd-9490-005056c00008.pdf"

}

其中,

jdbc_url是java需要的jdbc配置,当然我们也可以把用哪一种jdbc驱动也作为参数,这样更通用。

Jasper是jasper report模板的路径。

pdf_file是输出pdf的文件名,django接下来要重定向的所在。

Param是jasper report模板需要的参数,会原封不动地传给jasper report。

接收这个json文件作为输入的java工具,是一个通用的工具

唯一的输入参数是json文件的路径

1. 解析json文件,得到jdbc_url,构造一个数据库连接对象

2. 解析params参数,构造对应的hash_map

3. 调用 Jasper report,生成pdf文件,调用的时候需要jasper模板的路径和输出的pdf文件名

附,命令行的一个sample

java -Djava.class.path="D:\djangoapp\vodweb\vod\appserver" -Djava.ext.dirs="D:\PROGRA~1\JASPER~1\IREPOR~1.0\lib" HelloWorld D:/djangoapp/vodweb/media\pdf\6592d8a1-6775-11dd-b59d-005056c00008.json

  评论这张
 
阅读(1092)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017