??xml version="1.0" encoding="utf-8" standalone="yes"?>
关于iReport和JasperReport的简明手?/p>
By Gem 伍子?/p>
JasperReport的开发环境必要导入以下所有包Q?/p> 1Q?JasperReport包,?font size="+0">jasperreports-0.6.1.jarQ?/p> 2Q?Aparche Common包,包括logging?font size="+0">digester?font size="+0">beanutils?font size="+0">collections?font size="+0">logging-apiQ?/p> 3Q?iText包,包括itext-1.1.jar?font size="+0">iTextAsian.jarQ用于输Z文字W到PDF文gQ?/p> 以上所有包Q除?font size="+0">iTextAsian.jarQ都已经包含?font size="+0">iReport\lib目录下?/p> ?font size="+0">iReport jrxml文g通过Jasper~译之后变成了jasper文gQ这份文件才是真正在E序中调用生成报表的report文g?/p> 但是有一点要注意的是Q?font size="+0">jasper的各个版本编译出来的jasper文gq不兼容Q就是说?font size="+0">0.6.1版编译出来的文g?font size="+0">0.6.4版调用是会出错的Q?font size="+0">iReport自带?font size="+0">Jasper版本?font size="+0">0.6.1Q?font size="+0">jasper的最新版本是0.6.4。所以ؓ了保持通用性,我徏议只?font size="+0">iReport来开发编?font size="+0">jrxml文gQ而不~译?font size="+0">jasper文gQ在我们的打印报表程序中再即时编译一ơ。虽然这h率可能会低了一点,但是保证了不同版本的兼容性?/p> 在我们的E序中,要调?font size="+0">Jasper的话Q首先要得到一个数据库?font size="+0">ConnectionQŞ如:Connection con = ... 需要往JasperReport传参数的话只需要新Z?font size="+0">MapQ以参数名作?font size="+0">keyQ需要传入的对象作ؓvalueQ譬如: Map props = new HashMap(); props.put("name", new String("name")); 需要多个参数只需分别putq?font size="+0">Map里去可以了?/p> JasperReport有如下几个主要的ManagerQ?/p> ?font size="+0">jrxml文g~译?font size="+0">jasper文g?font size="+0">JasperReport对象 从数据源中获取数据ƈ填充jasper文g?font size="+0">JasperReport对象Q?font size="+0">JasperPrint对象 ?font size="+0">JasperPrint对象直接输出到打印机打印 ?font size="+0">JasperPrint对象导出?font size="+0">PDF?font size="+0">HTML文gQ或) q行一?font size="+0">jasper文g?font size="+0">JasperReport对象q输出到PDF?font size="+0">Html文gQ或)中,我的理解是等于集成了JasperFillManager?strong>JasperExportManager的功?/p> 对于上述对象的详l说明请参阅JasperReport的文?/p> 例程Q?/p>例程Q?
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 ?/p> e.printStackTrace(); } catch (SQLException e) { // TODO 自动生成 catch ?/p> e.printStackTrace(); } catch (JRException e) { // TODO 自动生成 catch ?/p> e.printStackTrace(); } } 1Q?font size="+0">iReport 2Q?font size="+0">iReport 3Q用Report SQL查询之后Q可能会出现某些字段没有自动建立FieldQ就需要在Field中手动定义了?/p>
1安装
1.1 iReport的安?/h2>
iReport直接解压后,?font size="+0">J2SDK\lib
目录下的tools.jar拯?font size="+0">iReport\lib目录下,然后?font size="+0">iReport目录下运?font size="+0">iReport.bat卛_?br />需要注意的?font size="+0">tools.jar的版本必要与本机安装的jre一_也就是说Q如果系l安装的?font size="+0">jre1.4.2必ȝjdk1.4.2?font size="+0">tools.jar?br />1.2 JapserReport开发(q行Q环境的搭徏
2 开发流E?/h1>
JasperCompileManager JasperFillManager JasperPrintManager JasperExportManager JasperRunManager 3 注意事项
1.build.xml里面display资源没有国际化处理,也就是没有进行编?在build.xmlq行修改使之q行国际?
修改Ҏ:
<native2ascii src="web/WEB-INF/classes" dest="${build.dir}/web/classes"
includes="ApplicationResources_zh*.properties" encoding="UTF-8"/>
<generate-database-properties/>
改ؓ:
<native2ascii src="web/WEB-INF/classes" dest="${build.dir}/web/classes"
includes="*_zh*.properties" encoding="UTF-8"/>
<generate-database-properties/>
2.Tomcat 的URLEnCording要设|ؓUTF8,应ؓappfuse是以utf-8打包?br />
3.是要对原始ApplicationResources_zh_cn.propertiesq行ascii~码转换然后丢到classes里面,不要用他ant自动转换q的.奇怪的是appfuse的ant的时候是Ҏ件进行{换了,但是q是有部分中文存在ؕ?奇怪ing......不知道是appfuse的疏忽还是什?l箋研究?..我是appfuse-1.9-src的包.但是我手工{了下ant之前的源?发现q问题消失.p个原因搞了我一个晚?...郁闷
修改Ҏ:
native2ascii -encoding UTF-8 ApplicationResources_zh_CN.properties te (te{后文件名)
native2ascii te ApplicationResources_zh_CN.properties1 -reverse(转回?呵呵)
]]>
在你认你正的完成了上q步骤以?- 览一?指南 了解如何使用appfuse开发程序?
安装的可选项