45fan.com - 路饭网

搜索: 您的位置主页 > 电脑频道 > 电脑教程 > 阅读资讯:怎么样正确使用Jasperreports和iReport?

怎么样正确使用Jasperreports和iReport?

2016-08-26 13:01:21 来源:www.45fan.com 【

怎么样正确使用Jasperreports和iReport?

² 下载

iReport-0.4.0(报表的可视化编辑工具)

iTextAsian.jar加入classpath,如果报表中含有亚洲字符,输出PDF文件时才能正常的显示。

² iReport的使用步骤

1、 选择工具栏上新建报表,设置基本信息,包括名称,打印纸大小,打印方向(纵向或者是横向),在more标签页选择XML编码方式,如果需要XML支持中文,那么XML ENCODINGGB2312,还可选择总标题和总结为单独一页打樱

2、 报表上主要的元素为静态文本(static text)、变量(variable)、动态域(Field)、参数(Parameter)。静态文本就是显示在报表上不变的文字。变量是指通过系统自带的计算得到的一些值(如当前页、总记录数等)。动态域可以是连接数据库时所的的字段,也可以是通过自定义数据源(可能是包含一组数据的实体类)。参数是程序运行时传到报表内部的变量,通常通过Map形式传入,可作为显示变量或者用于sql语句中变化的条件。

注:$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]

3、 拖拽上述元素到报表页面上后,需要设定他们的字体fontname是用ireport预览时使用的字体,如果可能含有中文,那么必须选择一个中文字体,否则无法正常显示。PDF font name选择STSONG_LIGHT,PDF Embeded PDF Encoding复选框上打钩,并在下拉框中选择UniGB_UCS2_H(Chinese_simplified) 。这样输出的pdf文件才能正常显示中文。

注意:如果用ireport生成含中文的报表,则需要把iTextAsian.jar拷贝到iReportlib文件夹下。

TextField标签页里选择文本域的类,重新选择一下evaluation timenow(如果不激活该下拉框,运行时候会出现evaluation time 错误字样)。如果文本在某个组里,那么从Evaluation group里选择相应的组。勾选blank when null TextField expression是文本的表达式,能够完成一些如字符串连接等简单操作,比如当前页”+$V{PAGE_NUMBER}Pattern里点击create按钮可选择时间日期相关的格式化后的形式,便于报表打印时间等动态生成。

4、 build菜单内能选择多种方式,默认的为编译以后用JRVieweriReport中预览显示效果,选择pdf preview就是输出为一个PDF文件来预览显示效果。在实际的web打印中,使用jaseperreport提供的方法生成PDF

5、 几种Datasource的方法

a) JDBC连接数据库。新建一个连接,选择类型为Database JDBC connection,给这个连接一个名字,填写driver,数据库连接的url,数据库用户名密码等信息后,测试通过即可建立连接。

b) Customer JRDatasource取得数据。首先写一个包含数据的类,它实现了JRDatasource接口,实现next()getFieldValue(JRFeild field)两个方法。Next方法用于取得下一条记录,getFieldValue方法则根据jasper文件中定义的field的名称来取得对应列的数据。另外,为了在ireport中能预览效果,我们还需要构造取得该数据源类的方法,通常命名为XXXDatasourceFactory类,它提供了getTheDatasource类取得数据源类这个对象。在连接时,填上工厂类和取得数据源类的对应方法后即可得到数据。

然后在菜单上的build->set active connection选择连接,在datasource->report query里输入sql语句或javabean方式得到数据域。得到的数据域按名存放在Fields里,可拖拽到页面报表上。

6、 编译过程就是把 *.jrxml文件编译成jasperreport能使用的*.jasper文件。我们从ireport只需要得到一个jasper文件即可。

² WEB打印程序

1、 首先需要取的数据的类,形成对象数组的方法可以通过JDBC或其他方式计算获得。

Public Datasource implements JRDatasource{

Private Object[][] data={};

Public void next(){

//取得对象数组下一行

}

Public object getFieldValue(JRField field){

//逐个字符串匹配域的名称并返回相应的值

}

}

2、 调用jasperreport里生成PDF的方法

JasperRunManager.runReportToPdfFile

(String arg,String output,Map param,JRDatasource datasource)

//arg表示该报表使用的jasper文件目录, output指输入pdf文件的路径和文件名,param指报表中需要使用的参数的mapdatasource就是包含数据的实体类。

注意:在Tomcat下运行时需要加入iTextAsian.jarcommon/lib目录下。否则会出现STSONG_LIGHTUniGB_UCS2_H无法找到的错误


本文地址:http://www.45fan.com/dnjc/67861.html
Tags: iReport Jasperreports #178
编辑:路饭网
相关文章列表
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部