收藏
转贴自:http://blog.csdn.net/jawsy/archive/2005/06/09/390998.aspx
1 安装
1.1 iReport 的安装
iReport 直接解压后,将 J2SDK/lib 目录下的 tools.jar 拷贝到 iReport/lib 目录下,然后在 iReport 目录下运行 iReport.bat 即可。需要注意的是 tools.jar 的版本必须要与本机安装的 jre 一致,也就是说,如果系统安装的是 jre1.4.2 就必须用 jdk1.4.2 的 tools.jar 。
1.2 JapserReport 开发(运行)环境的搭建
JasperReport 的开发环境必须要导入以下所有包:
1. JasperReport 包,如jasperreports-0.6.1.jar ;
2. Aparche Common 包,包括logging 、digester 、beanutils 、collections 、logging-api ;
3. iText 包,包括itext-1.1.jar 和iTextAsian.jar (用于输出中文字符到PDF 文件)
以上所有包(除了iTextAsian.jar )都已经包含在iReport/lib 目录下。
2 开发流程
用iReport 可视化编辑生成的文件是jrxml 文档,这是一种xml 文件,记录了一份report 的详细信息,我们可以直接用写字板打开它编辑,iReport 就是一个方便我们生成和编辑jrxml 文件的工具,它也可以很方便地将jrxml 文件编译成jasper 报表文件。
jrxml 文件通过Jasper 编译之后就变成了jasper 文件,这份文件才是真正在程序中调用生成报表的report 文件。
但是有一点要注意的是,jasper 的各个版本编译出来的jasper 文件并不兼容,就是说用0.6.1 版编译出来的文件用0.6.4 版调用是会出错的,而iReport 自带的Jasper 版本是0.6.1 ,而jasper 的最新版本是0.6.4 。所以为了保持通用性,我建议只用iReport 来开发编辑jrxml 文件,而不编译成jasper 文件,在我们的打印报表程序中再即时编译一次。虽然这样效率可能会低了一点,但是保证了不同版本的兼容性。
在我们的程序中,要调用Jasper 的话,首先要得到一个数据库的Connection ,形如:Connection con = ...
需要往JasperReport 传参数的话只需要新建一个Map ,以参数名作为key ,需要传入的对象作为value ,譬如:
Map props = new HashMap();
props.put("name", new String("name"));
需要多个参数只需分别put 进Map 里去就可以了。
JasperReport 有如下几个主要的Manager :
JasperCompileManager | 将jrxml 文件编译成jasper 文件或JasperReport 对象 |
JasperFillManager | 从数据源中获取数据并填充jasper 文件或JasperReport 对象,产生JasperPrint 对象 |
JasperPrintManager | 将JasperPrint 对象直接输出到打印机打印 |
JasperExportManager | 将JasperPrint 对象导出成PDF 或HTML 文件(或流) |
JasperRunManager | 运行一个jasper 文件或JasperReport 对象并输出到PDF 或Html 文件(或流)中,我的理解是等于集成了JasperFillManager 和JasperExportManager 的功能 |
对于上述对象的详细说明请参阅JasperReport 的文档。
例程:
例程:public static void main(String[] args) {
try {
Class.forName("org.gjt.mm.mysql.Driver");
Connection con = DriverManager.getConnection(
"jdbc:mysql://wes:3306/umpdb?useUnicode=true&characterEncoding=GBK", "root", "elite");
File f1 = new File("Account.jrxml");
File f2 = new File("Contact.jrxml");
JasperReport main = JasperCompileManager.compileReport(f1
.getAbsolutePath());
JasperReport report = JasperCompileManager.compileReport(f2
.getAbsolutePath());
Map props = new HashMap();
props.put("subreport", report);
JasperPrint print = JasperFillManager.fillReport(main, props,con);
//JasperPrintManager.printReport(print,true);
JasperExportManager.exportReportToPdfFile(print, "a.pdf");
//JasperRunManager.runReportToPdfFile("Account.jasper", "a.pdf", props, con);
} catch (ClassNotFoundException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (JRException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
3 注意事项
1 .iReport 中新建中文报表的时候记得要输入XML 编码GB2312 。
2 .iReport 中定义中文字体的时候,要选择PDF Font Name 为STSong-Light (宋体)、MHei-Medium (黑体)、MSung-Light ,在PDF Encoding 中选择GB-UCS2-H(Chinese Simplified) ,否则输出到PDF 时会乱码。
3 .用Report SQL 查询之后,可能会出现某些字段没有自动建立Field ,就需要在Field 中手动定义了。
1 安装
1.1 iReport 的安装
iReport 直接解压后,将 J2SDK/lib 目录下的 tools.jar 拷贝到 iReport/lib 目录下,然后在 iReport 目录下运行 iReport.bat 即可。需要注意的是 tools.jar 的版本必须要与本机安装的 jre 一致,也就是说,如果系统安装的是 jre1.4.2 就必须用 jdk1.4.2 的 tools.jar 。
1.2 JapserReport 开发(运行)环境的搭建
JasperReport 的开发环境必须要导入以下所有包:
1. JasperReport 包,如jasperreports-0.6.1.jar ;
2. Aparche Common 包,包括logging 、digester 、beanutils 、collections 、logging-api ;
3. iText 包,包括itext-1.1.jar 和iTextAsian.jar (用于输出中文字符到PDF 文件)
以上所有包(除了iTextAsian.jar )都已经包含在iReport/lib 目录下。
2 开发流程
用iReport 可视化编辑生成的文件是jrxml 文档,这是一种xml 文件,记录了一份report 的详细信息,我们可以直接用写字板打开它编辑,iReport 就是一个方便我们生成和编辑jrxml 文件的工具,它也可以很方便地将jrxml 文件编译成jasper 报表文件。
jrxml 文件通过Jasper 编译之后就变成了jasper 文件,这份文件才是真正在程序中调用生成报表的report 文件。
但是有一点要注意的是,jasper 的各个版本编译出来的jasper 文件并不兼容,就是说用0.6.1 版编译出来的文件用0.6.4 版调用是会出错的,而iReport 自带的Jasper 版本是0.6.1 ,而jasper 的最新版本是0.6.4 。所以为了保持通用性,我建议只用iReport 来开发编辑jrxml 文件,而不编译成jasper 文件,在我们的打印报表程序中再即时编译一次。虽然这样效率可能会低了一点,但是保证了不同版本的兼容性。
在我们的程序中,要调用Jasper 的话,首先要得到一个数据库的Connection ,形如:Connection con = ...
需要往JasperReport 传参数的话只需要新建一个Map ,以参数名作为key ,需要传入的对象作为value ,譬如:
Map props = new HashMap();
props.put("name", new String("name"));
需要多个参数只需分别put 进Map 里去就可以了。
JasperReport 有如下几个主要的Manager :
JasperCompileManager | 将jrxml 文件编译成jasper 文件或JasperReport 对象 |
JasperFillManager | 从数据源中获取数据并填充jasper 文件或JasperReport 对象,产生JasperPrint 对象 |
JasperPrintManager | 将JasperPrint 对象直接输出到打印机打印 |
JasperExportManager | 将JasperPrint 对象导出成PDF 或HTML 文件(或流) |
JasperRunManager | 运行一个jasper 文件或JasperReport 对象并输出到PDF 或Html 文件(或流)中,我的理解是等于集成了JasperFillManager 和JasperExportManager 的功能 |
对于上述对象的详细说明请参阅JasperReport 的文档。
例程:
例程:public static void main(String[] args) {
try {
Class.forName("org.gjt.mm.mysql.Driver");
Connection con = DriverManager.getConnection(
"jdbc:mysql://wes:3306/umpdb?useUnicode=true&characterEncoding=GBK", "root", "elite");
File f1 = new File("Account.jrxml");
File f2 = new File("Contact.jrxml");
JasperReport main = JasperCompileManager.compileReport(f1
.getAbsolutePath());
JasperReport report = JasperCompileManager.compileReport(f2
.getAbsolutePath());
Map props = new HashMap();
props.put("subreport", report);
JasperPrint print = JasperFillManager.fillReport(main, props,con);
//JasperPrintManager.printReport(print,true);
JasperExportManager.exportReportToPdfFile(print, "a.pdf");
//JasperRunManager.runReportToPdfFile("Account.jasper", "a.pdf", props, con);
} catch (ClassNotFoundException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (JRException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
3 注意事项
1 .iReport 中新建中文报表的时候记得要输入XML 编码GB2312 。
2 .iReport 中定义中文字体的时候,要选择PDF Font Name 为STSong-Light (宋体)、MHei-Medium (黑体)、MSung-Light ,在PDF Encoding 中选择GB-UCS2-H(Chinese Simplified) ,否则输出到PDF 时会乱码。
3 .用Report SQL 查询之后,可能会出现某些字段没有自动建立Field ,就需要在Field 中手动定义了。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jaogun/archive/2010/01/23/5223458.aspx