jasperreport和iReport的使用

 

下载iReport-0.4.0 (图形化界面生成编辑修改报表的结构)

下载iTextAsian.jar (亚洲语言包,如果生成的报表中含有亚洲字符,则需要在classpath中添加该jar

下载jasperreports-0.6.1-project.zip(包含使用jasperreports的一些例子)

 

window下运行iReport/bin/startup.bat启动iReport

 

常见的问题

1、数据源:通常我们使用JDBC直接连接数据库或Custom DataSource

Custom Datasource是使用用户自定义的数据源来组织数据的方式,可以是excelcsv等文件形式,也可以是一个包含数据的类(以下简称数据类)。

 

2、在build菜单下选择报表的输出形式,比如PDF preview 就是输出成pdf文件,JRViewer Preview就是在ireport环境下的预览功能。注意在ireport环境下的效果和实际产生的具体文件的显示会有差异。

对包含中文的static text field text,在properties里需修改font为某种系统内的中文字体,PDF font name选择STSong_Light,选中PDF Embeded PDF EncodingUniGB-UCS2-H(Chinese simplified)。并且将iTextAsian.jar加入到ireportlib文件夹下,这样通过ireport产生的pdf文件就支持中文了。

 

3、在应用系统中产生的pdf文件不是通过ireport产生的,ireport只是用于编辑及预览报表形式,它产生*.jrxml文件,编译后产生*.jasper文件。通过在程序中调用JasperRunManager.runReportToPdfFile(String arg,Map param,JRDatasource datasource)方法,该方法的三个参数分别表示代表报表形式的.jasper文件位置arg,从外部传入的参数集合param,和数据类。

 

4$P{param_name}代表参数,{}内是参数的名称,在报表中设定后,在运行的时候通过从外部传入的参数来动态生成标题等数据,并且可以作为查询条件传入sql语句使用(如果是使用JDBC直接连接数据库的话)

$V{PAGE_NUMBER}代表当前页数,$V代表variable,对现有的group$V{groupname_COUNT}代表当前组的记录数

$F{Field_name}表示字段,是报表中最重要的部分。如果JDBC方式的连接,输入sql查询语句就可得到所有查询所得到的字段;如果是Custom Datasource方式,新建一字段,例如user_id。数据类中getFieldValue(JRField field)field就是报表中的$F{Field_name}。程序中根据JRField对象的name属性来确定返回哪个值

if("user_id".equals(field.getName()))return data[index][3] //代表返回当前行的第四个字段

 

5、如果出现evaluation time错误,只要从properties>text Field>Evaluation time再选择一次now即可

 

6、关于数据类。数据类要实现了JRDataSource的接口,nextgetFieldValue方法。next的功能相当于记录下移一行,getFieldValue的功能就是从jasper里面得到一个Field对象,然后通过字符串的比较来获得对应数据填充。

如果要在ireport里看到效果,必须有取得这个数据类的方法,通常的做法是构造XXXDataSourceFactory类,提供返回数据类的方法。该类在实际的应用程序中并不需要

例如: getTheDatasource(){return new XXXDatasource();}

 

 

7、打印当前时间的方法。增加一个filedtext expressionnew SimpleDateFormat("yyyy.MM.dd").format(new Date())

 

8、注意要勾选当数值为空时显示为空白

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值