JasperReport简单讲解

系统 2089 0
               JasperReport是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,或者XML格式。该库完全由Java写成,可以用于在各种Java 应用程序 ,包括J2EE,Web应用程序中生成动态内容。
具体的是讲解参考:
百度百科:

1. alterdesign

该例子演示了报表编译后,在报表展现的时候如何动态的控制其中的元素
比如让某一个矩形变色或其他

2. antcompile
 
演示如何让 ant 来编译
3. chart
 
演示了如何在报表中添加图像,JasperReport是用Scriptlet的方式
往报表中添加图像,而Scriptlet是调用也是开源的jfreechart的Api来
生成图形,去jfreechart看一下,该工具能的图形生成能力也很强
4. datasource
 
演示了如何在报表中使用各种数据源,能够使用beanarray
beancollection,也可以用自定义的数据源,只要继承了JRDataSource的
两个接口,这个能给用户提供非常大的灵活性,报表的数据不用局限于一
条Sql语句,也可以使用存储过程,对生成报表中的数据也可以排序,二
次检索,等等
5. fonts
 
各种字体的演示
6. horizontal
 
演示了水平分栏的报表,演示报表中分了三栏,其中还用到了
textFieldExpression,就像if语句的效果来选择输出的内容
7. hyperlink
 
演示了各种样式的链接
8 . images 

演示了如何在报表中加入图像以及图像的显示方式
9. jasper
 
演示了分组分栏的报表,演示中用了2次group
10. jcharts 

演示了调用另一个开源的API jcharts来往报表中加入分析图形,原理同
上chart,如果jfreechart都还不能满足你分析图形的要求,那到jcharts
里找找看吧,说不定有
11. landscape
 
演示横向的报表
12. nopagebreak
 
演示比如在IE中不分页的方式打印出报表的内容,通过这个演示也可以
了解报表输出如何配置参数
13. noreport 

演示了如何直接通过java程序生成JasperPrint对象来输出
14. noxmldesign 

演示了如何直接通过java程序生成JasperDesign对象来动态的生成报
表,根据这个例子,用户可以作出自定义选列的报表,当然比较麻烦,
而且肯定自己要补充他的API库
(JasperReport真是强大啊,呵呵) 
15. pdfencrypt
 
演示了pdf的输出方式,可以给pdf文件加密码,其实就是pdf输出方式的
参数配置,具体有那些参数可配置,去看看API吧
16. printservice

演示了如何直接打印报表
17. query 

演示了如何让查询的sql动态起来,比如你可以通过一个Jsp页面传
报表的sql的where条件,order条件,甚至整个sql语句
18. rotation 

演示了文字纵向显示的报表
19. scriptlet
 
演示了如何继承JRDefaultScriptlet,并加入自己的处理语句,这个功能
可是很强大的哦,看看这些接口
beforeReportInit() afterReportInit() beforePageInit()
afterPageInit() beforeColumnInit() afterColumnInit() 
beforeGroupInit(String groupName)
afterGroupInit(String groupName) 
看看这些名字就知道你能完成那些功能,比如显示一列数据后,马上跟
上该列数据的分析图形,当然你也可以加上自己的方法并在报表中调用
20. shapes 

演示了JasperReport中自带的图形,及能配置的参数
当然你也能继承或者覆写JasperReport中的Api生成你要的图形,
21. stretch 

演示了如何处理报表中数据拉伸以及带来周围的线及框的拉伸,
你能了解到虽然黑框式表格不是JasperReport中缺省的展现方式,
但在JasperReport中不难实现
22. subreport 

演示了子报表,还告诉你一个报表中可以有n个子报表,子报表中还可以
嵌套子报表
23. tableofcontents 

演示了如何生成一个有目录的,复杂的报表
24. unicode 

演示了各种 字符编码
25. webapp 

演示了如何把报表放到一个JavaWeb项目中,可以用Jsp Servlet
applet,笔者做了一个有参数页面,可以选择html pdf applet
 

项目中学到的一些jasperReport的东东,先说点基础的概念吧!
        从 http://jasperforge.org/ 这个网址就可以得到ireport+jasperReport,注意下载iReport和jasperReport的版本必须一致。我们所说的报表指的是JasperReport,iReport只是jasperReport的一个可视化的开发工具,JasperReport通过读取xml文件生成报表,分为三个部分:
编写xml文件也就是jrxml文件,读取并编译jrxml--->jasper文件,填充报表。
而iReport只是帮我们完成了一个可视化的编写jrxml文件,之后在我后面的文章中还会看到直接使用jasperReport的JasperDesign设计器也可以构造出一个没有jrxml文件的复杂报表。当然iReport这个工具还给我们提供了不少优秀的功能,编译、预览、复杂报表的设计。
基本设置
        打开iReport的“Options” -“ 选项“--"General",默认的中文好像并不是我们想象的那样好看,建议使用english。
"Compiler"标签的Default Compilation Directory 设置一个你自己的路径,也可以不设置,这个主要是存放编译好的jasper文件的路径的,笔者不太喜欢文件的乱存放。
"External Programs" 选择使用什么样的程序浏览报表,默认是使用iReport自身的JRViewer Previwer预览的,我们可以指定自己的pdf,html等其它的预览工具。
数据源设置
        将数据库使用的jdbc驱动包复制到iReport安装路径的lib文件夹下,新建一个connections/DataSource

JasperReport简单讲解

JaspreReport支持很多中数据源之后在详细介绍每一种数据源的使用
JasperReport简单讲解
PDF报表的中文处理
jasperreport支持中文依赖iText.jar
报表设计时将字体设计为:
JasperReport简单讲解
        网上找一些这方面的资料很容易就可以利用报表向导做一个简单的报表,
http://www.blogjava.net/fastunit/archive/2008/01/16/175687.html 这位哥们写的就很不错,截图都有了
http://jasperreports.sourceforge.net/api/index.html 这是jasperReport的api地址,大家可以利用它的源码自己生成api

 

 

JasperReport有三个域用来存放、展示数据,Parameter、Field、Variables,这次说说这三个吧!

Report Parameters

JasperReport 报表的参数是最为一个object类型的参数传递的,通常我们在jrxml文件中会这样定义

< parameter  name ="ReportTitle"  class ="java.lang.String" />

顾名思义,参数是用来传递给报表的,通常我们会动态的传递一个参数给报表作为报表的标题,传递给自报表一个参数用来作为自报表查询的条件等等。
jasperReport内置了几个有用的参数: REPORT_SCRIPTLET引用外部的scriptlet, REPORT_LOCALE 引用国际化preperty文件使用的, REPORT_CONNECTION 传递报表JDBC连接参数使用的等等。

public  Map getMap()  {

        Map map 
=   new  HashMap();
        map.put(
" reportTitle " " laoshulin " );
        
return  map;
    }

程序运行的时候就会动态的赋值给ReportTitle这个参数
下面这个是报表运行时需要的connection参数,是动态传递给子报表的

< connectionExpression > <![CDATA[ $P{REPORT_CONNECTION} ]]> </ connectionExpression >

我们在程序运行的时候的时候可以把一个打开的连接传给REPORT_CONNECTION参数,

parameters.put( " REPORT_CONNECTION " , getConnection());


Report Field

field是用来展现数据的域,也是最常用的一个,采用JDBC时iReport可以在我们写入SQL时自动检测到所有的field,有时我们需要自己手动建立一些field,这个字段没有什么好说的,我们可以在iReport设置它的各种属性。以后碰到的时候在说。

Report Variables

提起Variables不能不提expression,report expression是jasperReport一个非常实用的组件,它可以用来执行各种计算,修饰各个字段的数据。如:

< textFieldExpression >
    $F{FirstName} + " " + $F{LastName}
</ textFieldExpression >

< textFieldExpression >
    "Max Order ID is : " + $P{MaxOrderID}
</ textFieldExpression >


        报表变量是建立在表达式上的一个特殊的用来简化报表设计,一个变量可以执行内置类型的计算以及相应表达式,如:总数,总和、平均数、最低值、最高值、差额等等。

< variable  name ="QuantitySum"  
        class
="java.lang.Double"  calculation ="Sum" >
    
< variableExpression > $F{Quantity} </ variableExpression >
</ variable >

JasperReport内置了一些变量   

PAGE_NUMBER 页数
COLUMN_NUMBER 列数
REPORT_COUNT 报表总数
PAGE_COUNT  当前页数
COLUMN_COUNT 列总数

值得一提的是JasperReport还有一个比较强大的功能就是parameter/field/variables都支持html语言
JasperReport简单讲解

设置Markup为HTML时就可以在Text Field Expression 中写入html标记了

" < font  color ='blue'  size ='5' > "+$P{reportTitle}+" </ font > "

当报表预览的时候就可以直接看到html的效果了

JasperReport简单讲解


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论