﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-zhouyangLib-文章分类-iReport</title><link>http://www.blogjava.net/yangmage/category/37470.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 06 Feb 2009 20:33:35 GMT</lastBuildDate><pubDate>Fri, 06 Feb 2009 20:33:35 GMT</pubDate><ttl>60</ttl><item><title>JasperReport之exploer常用参数解析</title><link>http://www.blogjava.net/yangmage/articles/253567.html</link><dc:creator>Solar</dc:creator><author>Solar</author><pubDate>Fri, 06 Feb 2009 07:10:00 GMT</pubDate><guid>http://www.blogjava.net/yangmage/articles/253567.html</guid><wfw:comment>http://www.blogjava.net/yangmage/comments/253567.html</wfw:comment><comments>http://www.blogjava.net/yangmage/articles/253567.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangmage/comments/commentRss/253567.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangmage/services/trackbacks/253567.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;<span style="mso-bookmark: _Toc154202843"><strong><span style="font-size: 18pt; mso-font-kerning: 0pt">工作流程介绍</span></strong></span>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">如果我们已经用</span><span style="font-size: 9pt; mso-font-kerning: 0pt">iReport</span><span style="font-size: 9pt; mso-font-kerning: 0pt">已经将</span><span style="font-size: 9pt; mso-font-kerning: 0pt">xml</span><span style="font-size: 9pt; mso-font-kerning: 0pt">编译为</span><span style="font-size: 9pt; mso-font-kerning: 0pt">.japser</span><span style="font-size: 9pt; mso-font-kerning: 0pt">文件后，上图中编译部分的工作就可以省略，</span><span style="font-size: 9pt; mso-font-kerning: 0pt">JasperFillManager</span><span style="font-size: 9pt; mso-font-kerning: 0pt">根据定义的数据源和报表模版填充</span><span style="font-size: 9pt; mso-font-kerning: 0pt">jasperPrint</span><span style="font-size: 9pt; mso-font-kerning: 0pt">，有数据的报表就在这个部分填充的。如果我们要导出到不同类型的档案，则需要通过</span><span style="font-size: 9pt; mso-font-kerning: 0pt">JasperExportMananger</span><span style="font-size: 9pt; mso-font-kerning: 0pt">，也可以自己写一个类，但是要实现</span><span style="font-size: 9pt; mso-font-kerning: 0pt">net.sf.jasperreports.engine. JRExporter</span><span style="font-size: 9pt; mso-font-kerning: 0pt">这个接口。</span><span style="font-size: 9pt; mso-font-kerning: 0pt">JaserReport</span><span style="font-size: 9pt; mso-font-kerning: 0pt">提供的</span><span style="font-size: 9pt; mso-font-kerning: 0pt">exporter</span><span style="font-size: 9pt; mso-font-kerning: 0pt">再下面一节介绍。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: -1cm; text-align: left; mso-pagination: widow-orphan" align="left"><a name="_Toc154202844"><strong><span style="font-size: 18pt; mso-font-kerning: 0pt"><font color="#000000">2.3</font></span></strong></a><span style="mso-bookmark: _Toc154202844"><strong><span style="font-size: 7pt; mso-font-kerning: 0pt"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span></strong></span><span style="mso-bookmark: _Toc154202844"><strong><span style="font-size: 18pt; mso-font-kerning: 0pt">重要的</span></strong></span><strong><span style="font-size: 18pt; mso-font-kerning: 0pt">Class</span></strong><strong><span style="font-size: 18pt; mso-font-kerning: 0pt">和</span></strong><strong><span style="font-size: 18pt; mso-font-kerning: 0pt">Interface</span></strong><strong><span style="font-size: 18pt; mso-font-kerning: 0pt">详细介绍</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: -21pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">&#216;</span><span style="font-size: 7pt; mso-font-kerning: 0pt"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><strong><span style="font-size: 9pt; mso-font-kerning: 0pt">Class net.sf.jasperreports.engine.JasperReport</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">这个类的对象通过</span><strong><span style="font-size: 9pt; mso-font-kerning: 0pt">net.sf.jasperreports.engine.util.JRLoader</span></strong><span style="font-size: 9pt; mso-font-kerning: 0pt">从</span><span style="font-size: 9pt; mso-font-kerning: 0pt">.jasper</span><span style="font-size: 9pt; mso-font-kerning: 0pt">文件中获取，为用数据填充和产生报表做准备，当用数据填充报表的时候，运行时求各种各样报表表达式的值。对象中包含了报表的各种元素，例如报表的大小，显示位置，显示的栏位，图片信息等等。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: -21pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">&#216;</span><span style="font-size: 7pt; mso-font-kerning: 0pt"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><strong><span style="font-size: 9pt; mso-font-kerning: 0pt">Class net.sf.jasperreports.engine.util.JRLoader</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">所有</span><span style="font-size: 9pt; mso-font-kerning: 0pt">JasperReports </span><span style="font-size: 9pt; mso-font-kerning: 0pt">主要的功能，象报表编辑，报表填充及导出，经常用到序列化的对象，</span><span style="font-size: 9pt; mso-font-kerning: 0pt">net.sf.jasperreports.engine.util.JRLoader</span><span style="font-size: 9pt; mso-font-kerning: 0pt">可以帮助从文件或者</span><span style="font-size: 9pt; mso-font-kerning: 0pt">URLs</span><span style="font-size: 9pt; mso-font-kerning: 0pt">或者输入流中装载这些被序列化的对象。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: -21pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">&#216;</span><span style="font-size: 7pt; mso-font-kerning: 0pt"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><strong><span style="font-size: 9pt; mso-font-kerning: 0pt">Class net.sf.jasperreports.engine.JasperPrint</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">这个类的对象是通过填充类根据</span><span style="font-size: 9pt; mso-font-kerning: 0pt">net.sf.jasperreports.engine.JasperReport</span><span style="font-size: 9pt; mso-font-kerning: 0pt">的对象用数据填充后的结果，这样可以被很直观的被别的类引用，将报表输出到网络或者文件</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: -21pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">&#216;</span><span style="font-size: 7pt; mso-font-kerning: 0pt"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><strong><span style="font-size: 9pt; mso-font-kerning: 0pt">Interface net.sf.jasperreports.engine.JRDataSource</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 10pt; mso-font-kerning: 0pt">JasperReports</span><span style="font-size: 10pt; mso-font-kerning: 0pt">是一个非常灵活的报表工具，在数据来源方面更是体现了这一点，程序员可以自己定义不同类型的数据源，前提是实现这个接口，我们的数据源就可以千变万化，数据源可以是</span><span style="font-size: 10pt; mso-font-kerning: 0pt">XML,CSV,TEXT,Object List </span><span style="font-size: 10pt; mso-font-kerning: 0pt">等等，在后面的章节详细描述如何实现该接口</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: -21pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">&#216;</span><span style="font-size: 7pt; mso-font-kerning: 0pt"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><strong><span style="font-size: 9pt; mso-font-kerning: 0pt">Class net.sf.jasperreports.engine.export.JExcelApiExporter</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">报表产生到一个</span><span style="font-size: 9pt; mso-font-kerning: 0pt">EXCEL</span><span style="font-size: 9pt; mso-font-kerning: 0pt">文档，如果报表里面有图形，一定要用这个</span><span style="font-size: 9pt; mso-font-kerning: 0pt">exporter</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: -21pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">&#216;</span><span style="font-size: 7pt; mso-font-kerning: 0pt"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><strong><span style="font-size: 9pt; mso-font-kerning: 0pt">Class net.sf.jasperreports.engine.export.JRCsvExporter</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">报表产生到一个</span><span style="font-size: 9pt; mso-font-kerning: 0pt">CVS</span><span style="font-size: 9pt; mso-font-kerning: 0pt">文档</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: -21pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">&#216;</span><span style="font-size: 7pt; mso-font-kerning: 0pt"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><strong><span style="font-size: 9pt; mso-font-kerning: 0pt">Class net.sf.jasperreports.engine.export.JRGraphics2Dexporter</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">报表输出到</span><strong><span style="font-size: 9pt; mso-font-kerning: 0pt">Graphics2D</span></strong><span style="font-size: 9pt; mso-font-kerning: 0pt">，</span><span style="font-size: 9pt; mso-font-kerning: 0pt">Java2D</span><span style="font-size: 9pt; mso-font-kerning: 0pt">应用的时候才会用到</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: -21pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">&#216;</span><span style="font-size: 7pt; mso-font-kerning: 0pt"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><strong><span style="font-size: 9pt; mso-font-kerning: 0pt">Class net.sf.jasperreports.engine.export.JRHtmlExporter</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">报表产生到一个</span><span style="font-size: 9pt; mso-font-kerning: 0pt">HTML</span><span style="font-size: 9pt; mso-font-kerning: 0pt">文档</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: -21pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">&#216;</span><span style="font-size: 7pt; mso-font-kerning: 0pt"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><strong><span style="font-size: 9pt; mso-font-kerning: 0pt">Class net.sf.jasperreports.engine.export.JRPdfExporter</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">报表产生到一个</span><span style="font-size: 9pt; mso-font-kerning: 0pt">PDF</span><span style="font-size: 9pt; mso-font-kerning: 0pt">文档</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: -21pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">&#216;</span><span style="font-size: 7pt; mso-font-kerning: 0pt"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><strong><span style="font-size: 9pt; mso-font-kerning: 0pt">Class net.sf.jasperreports.engine.export.JRRtfExporter</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">报表产生到一个</span><span style="font-size: 9pt; mso-font-kerning: 0pt">RTF</span><span style="font-size: 9pt; mso-font-kerning: 0pt">文档</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: -21pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">&#216;</span><span style="font-size: 7pt; mso-font-kerning: 0pt"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><strong><span style="font-size: 9pt; mso-font-kerning: 0pt">Class net.sf.jasperreports.engine.export.JRTextExporter</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">报表产生到一个</span><span style="font-size: 9pt; mso-font-kerning: 0pt">TXT</span><span style="font-size: 9pt; mso-font-kerning: 0pt">文档</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: -21pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">&#216;</span><span style="font-size: 7pt; mso-font-kerning: 0pt"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><strong><span style="font-size: 9pt; mso-font-kerning: 0pt">Class net.sf.jasperreports.engine.export.JRXlsExporter</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">报表产生到</span><span style="font-size: 9pt; mso-font-kerning: 0pt">EXCEL</span><span style="font-size: 9pt; mso-font-kerning: 0pt">文档，用这个</span><span style="font-size: 9pt; mso-font-kerning: 0pt">exporter</span><span style="font-size: 9pt; mso-font-kerning: 0pt">，报表中的图形将不被输出</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: -21pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">&#216;</span><span style="font-size: 7pt; mso-font-kerning: 0pt"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span><strong><span style="font-size: 9pt; mso-font-kerning: 0pt">Class net.sf.jasperreports.engine.export.JRTextExporter</span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 9pt; mso-font-kerning: 0pt">报表产生到</span><span style="font-size: 9pt; mso-font-kerning: 0pt">XML</span><span style="font-size: 9pt; mso-font-kerning: 0pt">文档</span></p>
======================================<br />
<table style="table-layout: fixed">
    <tbody>
        <tr>
            <td>
            <div class="cnt" id="blog_text" style="font-size: 14pt">
            <p><a name="_Toc154202845"><strong><span style="font-size: 18pt; mso-font-kerning: 0pt"><font size="1">2.4</font></span></strong></a><font size="1">Exporter常用参数说明</font></p>
            <p><font size="1">net.s.jasperreports.engine.JRExporterParameter. JASPER_PRINT</font></p>
            <p><font size="1">这个参数是net.sf.jasperreports.engine.JasperPrint的对象，exporter在导出报表前会做检测 </font></p>
            <p><font size="1">net.s.jasperreports.engine.JRExporterParameter. JASPER_PRINT_LIST</font></p>
            <p><font size="1">这个参数是包含了n个<br />
            net.sf.jasperreports.engine.JasperPrint对象的java.util.List，exporter在导出报表前会做检测</font></p>
            <p><font size="1">net.sf.jasperreports.engine.JRExporterParameter.INPUT_STREAM</font></p>
            <p><font size="1">这个参数是net.sf.jasperreports.engine.JasperPrint被序列化对象的输入流，exporter在导出报表前会做检测</font></p>
            <p><font size="1">net.sf.jasperreports.engine.JRExporterParameter.INPUT_URL</font></p>
            <p><font size="1">这个参数是包含net.sf.jasperreports.engine.JasperPrint被序列化对象的URL，exporter在导出报表前会做检测</font></p>
            <p><font size="1">net.sf.jasperreports.engine.JRExporterParameter.INPUT_FILE_NAME</font></p>
            <p><font size="1">这个参数是存储了net.sf.jasperreports.engine.JasperPrint被序列化对象的文件路径，exporter在导出报表前会做检测</font></p>
            <p><font size="1">注意：以上几个参数不能全部为空</font></p>
            <p><font size="1">net.sf.jasperreports.engine.JRExporterParameter.OUTPUT_STRING_BUFFER</font></p>
            <p><font size="1">这个参数是java.lang.StringBuffer的对象，存储已经产生出的指定格式报表的内容</font></p>
            <p><font size="1">net.sf.jasperreports.engine.JRExporterParameter.OUTPUT_WRITER</font></p>
            <p><font size="1">这个参数是java.io.Writer的对象，将指定格式报表的内容发送到一个字符流，例如Servlet的PrintWriter</font></p>
            <p><font size="1">net.sf.jasperreports.engine.JRExporterParameter.OUTPUT_STREAM</font></p>
            <p><font size="1">这个参数是java.io.OutputStream的对象，将指定格式报表的内容发送到一个输出流，例如ServletOutputStream</font></p>
            <p><font size="1">net.sf.jasperreports.engine.JRExporterParameter.OUTPUT_FILE</font></p>
            <p><font size="1">这个参数是java.io.FILE的对象，将指定格式报表的内容存储到文件里面</font></p>
            <p><font size="1">net.sf.jasperreports.engine.JRExporterParameter.OUTPUT_FILE_NAME</font></p>
            <p><font size="1">这个参数是java.lang.String的对象，将指定格式报表的内容存储到文件里面</font></p>
            <p><font size="1">net.sf.jasperreports.engine.JRExporterParameter.CHARACTER_ENCODING</font></p>
            <p><font size="1">这个参数是java.lang.String的对象，指定格式报表的内容编码</font></p>
            <p><font size="1">net.sf.jasperreports.engine.JExcelApiExporterParameter.IS_FONT_SIZE_FIX_ENABLED</font></p>
            <p><font size="1">这个参数是java.lang.Boolean的对象，是否允许自动修正Excel每个栏位的大小 </font></p>
            <p><font size="1">net.sf.jasperreports.engine.JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET</font></p>
            <p><font size="1">这个参数是java.lang.Boolean的对象，每一页是否用一个Sheet </font></p>
            <p><font size="1">net.sf.jasperreports.engine.JRXlsExporterParameter. IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS</font></p>
            <p><font size="1">这个参数是java.lang.Boolean的对象，是否移除行与行之间的空行 </font></p>
            <p><font size="1">net.sf.jasperreports.engine.JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND</font></p>
            <p><font size="1">这个参数是java.lang.Boolean的对象，页面的背景是否为白的</font></p>
            <p><font size="1">net.sf.jasperreports.engine.JRXlsExporterParameter.SHEET_NAMES</font></p>
            <p><font size="1">这个参数是java.lang.String的对象，Sheet的名字</font></p>
            <p><font size="1">net.sf.jasperreports.engine.JRCsvExporterParameter.FIELD_DELIMITER</font></p>
            <p><font size="1">这个参数是java.lang.String的对象，栏位之间的分隔符</font></p>
            <p><font size="1">net.sf.jasperreports.engine.JRCsvExporterParameter.RECORD_DELIMITER</font></p>
            <p><font size="1">这个参数是java.lang.String的对象，栏位之间的分隔符</font></p>
            <p><font size="1">net.sf.jasperreports.engine.JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR</font></p>
            <p><font size="1">这个参数是java.lang.Boolean的对象，是否输出图片到目录 </font></p>
            <p><font size="1">net.sf.jasperreports.engine.JRHtmlExporterParameter.IMAGES_DIR_NAME</font></p>
            <p><font size="1">这个参数是java.lang.String的对象，图片目录的绝对路径 </font></p>
            <p><font size="1">net.sf.jasperreports.engine.JRHtmlExporterParameter.IMAGES_DIR</font></p>
            <p><font size="1">这个参数是java.io.File的对象，图片目录</font></p>
            <p><font size="1">net.sf.jasperreports.engine.JRHtmlExporterParameter.IMAGES_URI</font></p>
            <p><font size="1">这个参数是java.lang.String的对象，通过Web访问时图片的URI</font></p>
            <p><font size="1">JasperReport内置的常用参数说明</font></p>
            <p><font size="1">这些参数是放到java.util.Map，在填充报表的时候使用</font></p>
            <p><font size="1">REPORT_CONNECTION</font></p>
            <p><font size="1">这个参数是java.sql.Connection对象，在用Report Query的时候调用</font></p>
            <p><font size="1">REPORT_DATASOURCE</font></p>
            <p><font size="1">这个参数是实现了接口net.sf.jasperreports.engine.JRDataSource的对象，在填充报表的时候调用</font></p>
            <p><font size="1">IS_IGNORE_PAGINATION</font></p>
            <p><font size="1">这个参数是java.lang.Boolean对象，报表是否忽略分页</font></p>
            <p><font size="1">REPORT_MAX_COUNT</font></p>
            <p><font size="1">这个参数是java.lang.Integer对象，报表显示的最大记录数</font></p>
            <p><font size="1">DRAWING_SUPPLIER</font></p>
            <p><font size="1">这个参数是实现了接口org.jfree.chart.plot.DrawingSupplier对象，定义自己的填充色</font></p>
            <p><font size="1">这个参数不是原来JasperReport定义的，是后来加上的</font></p>
            <p><font size="1">2.6&nbsp;&nbsp;&nbsp; JasperReport内置的常用变量说明</font></p>
            <p><font size="1">PAGE_NUMBER</font></p>
            <p><font size="1">当前页面的页码，即第几页</font></p>
            <p><font size="1">REPORT_COUNT</font></p>
            <p><font size="1">整个报表填充完成后，总的记录数</font></p>
            <p><font size="1">PAGE_COUNT</font></p>
            <p><font size="1">当前页面的记录数</font></p>
            <p><font size="1">COLUMN_COUNT</font></p>
            <p><font size="1">当前记录的行数，每个页面的计数会复位后重新计算。</font></p>
            <p><font size="1">2.7 如何实现接口JRDataSource</font></p>
            <p><font size="1">当调用填充报表过程的时候，负责填充的类会通过这个接口获取到相应的数据，jasperreport提供了几个实现了这个接口的类:</font></p>
            <p><font size="1">net.sf.jasperreports.engine.JRResultSetDataSource</font></p>
            <p><font size="1">这个是通过JDBC访问关系数据库得到的数据源</font></p>
            <p><font size="1">net.sf.jasperreports.engine.data.JRTableModelDataSource</font></p>
            <p><font size="1">这个是调用Java Swing tables得到的数据源</font></p>
            <p><font size="1">net.sf.jasperreports.engine.data.JRBeanCollectionDataSource</font></p>
            <p><font size="1">这个是调用collections得到的数据源</font></p>
            <p><font size="1">我们要定义自己的DataSource，需要实现下面两个方法:</font></p>
            <p><font size="1">public boolean next() throws JRException;</font></p>
            <p><font size="1">报表填充数据的时候，填充每一条记录之前都会调用这个方法，将指针移动到下一条数据，如果有下一条数据返回true,否则返回false。</font></p>
            <p><font size="1">public Object getFieldValue(JRField jrField) throws JRException;</font></p>
            <p><font size="1">当填充报表的每一个栏位的时候，会调用这个方法获取填充的值。JrField是报表里面定义显示栏位的对象在iReport工具里面可以定义jrField的名字类型以及description</font></p>
            <p><font size="1">2.8JasperReport如何绘制图形报表<br />
            JasperReport本身是不绘制图形报表的，JasperReport是通过调用JFreeChart产生的image显示到报表的页面里，所以我们还需要再了解JFreeChart，我们将再后面的章节介绍JFreeChart。</font></p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/yangmage/aggbug/253567.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yangmage/" target="_blank">Solar</a> 2009-02-06 15:10 <a href="http://www.blogjava.net/yangmage/articles/253567.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ireport+jasperreports 探索 </title><link>http://www.blogjava.net/yangmage/articles/253507.html</link><dc:creator>Solar</dc:creator><author>Solar</author><pubDate>Fri, 06 Feb 2009 02:42:00 GMT</pubDate><guid>http://www.blogjava.net/yangmage/articles/253507.html</guid><wfw:comment>http://www.blogjava.net/yangmage/comments/253507.html</wfw:comment><comments>http://www.blogjava.net/yangmage/articles/253507.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangmage/comments/commentRss/253507.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangmage/services/trackbacks/253507.html</trackback:ping><description><![CDATA[http://www.blogjava.net/43880800/archive/2006/11/28/84155.html<br />
<br />
<br />
<p><font color="#a52a2a">这几天在弄ireport+jasperreports的报表，终于弄得差不多了&#183;&#183;&#183;&#183;<br />
下面就把我这几天做的一些东西记录下来&#183;&#183;&#183;&#183;<br />
其中提出一些特别要注意的地方（我就是在那几个地方浪费了些时间）&#183;&#183;&#183;</font> </p>
<p><font color="#a52a2a">1、先介绍一下ireport及asperreports吧&#183;&#183;&#183;&#183;<br />
Jasperreport是一个报表制作程序，用户需要按照它制定的规则编写一个XML文件，<br />
然后得到用户需要输出的格式文件。它支持输出的文件格式包括PDF,HTML,XML,XLS,CVS等等。<br />
而iReport就是一个制作Jasperreport的XML文件的可视化开发工具。</font> </p>
<p><font color="#a52a2a">2、下载ireport和jasperreports&#183;&#183;&#183;<br />
jasperreport下载地址：（我下的是jasperreports-0.6.8）</font> <a href="http://jasperreports.sourceforge.net/"><font color="#a52a2a">http://jasperreports.sourceforge.net</font> </a><br />
<font color="#a52a2a">ireport下载地址：（我下的是iReport0.5.0）</font> <a href="http://ireport.sourceforge.net/"><font color="#a52a2a">http://ireport.sourceforge.net</font> </a></p>
<p><font color="#a52a2a">3、下载了ireport将它解压缩以后运行iReport.bat文件，过大约30秒如果能出现ireport的主窗体<br />
则表明你的系统已经可以运行ireport了，但是我的不行，所以我编辑目录下的iReport.bat文件，<br />
代码如下&#183;&#183;&#183;&#183;<br />
@echo off</font> </p>
<p><font color="#a52a2a">set JAVA_HOME=C:\j2sdk1.4.0_03<br />
set ANT_HOME=C:\ant<br />
set IREPORT_HOME=C:\Documenti\progetti\iReport\iReport2\</font> </p>
<p><font color="#a52a2a">rem %ANT_HOME%\bin\ant javadocs<br />
%ANT_HOME%\bin\ant iReport</font> </p>
<p><font color="#a52a2a">----------------<br />
这里是采用ant来运行的，所以还需要下载一个ant&#183;&#183;&#183;<br />
如果你没有安装ant的话也可以找到noAnt文件夹下的startup.bat文件即可运行&#183;&#183;&#183;</font> </p>
<p><font color="#a52a2a">4、数据库&#183;&#183;&#183;<br />
我是用的mysql数据库，之前配置数据库的JDBC驱动器一直不成功原因是我下的mysql的jdbc驱动太老了，<br />
和ireport的不兼容&#183;&#183;&#183;&#183;<br />
建议到</font> <a href="http://dev.mysql.com/downloads/"><font color="#a52a2a">http://dev.mysql.com/downloads/</font> </a><font color="#a52a2a">下载最新版本&#183;&#183;&#183;</font> </p>
<p><font color="#a52a2a">5、配置数据库连接&#183;&#183;&#183;&#183;<br />
这个是报表与数据库的接口，通过&lt;资料来源&gt;--&lt;连接/资料来源&gt;开启配置对话框，ireport会记录以前使用的<br />
所有连接，除非你手工删除这些连接，否则连接将一直存在&#183;&#183;&#183;<br />
配置新连接界面如下：<br />
&nbsp;<img alt=" " src="http://xiaoya317.blogchina.com/inc/o_1.jpg" onload="function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10; img_auto_size(this,450,true);&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}" align="center" /><br />
提示：如果你需要报表提供中文内容显示可以在JDBC URL下工夫，比如输入：<br />
jdbc:mysql://localhost/xiaoya?user=root&amp;password=root&amp;useUnicode=true&amp;characterEncoding=GB2312</font> </p>
<p><font color="#a52a2a">6、中文问题&#183;&#183;&#183;&#183;<br />
解决pdf中文问题需要下载itextasian.jar和itext-1.3.jar，将其下载后放到ireport/lib下即可&#183;&#183;<br />
要在这里提一下的是之前我也下载了这两个东东放到指定的位置了可还是乱码，后来还是解决了&#183;&#183;<br />
解决方法：<br />
在iReport中新建一个TextField的时候会自动把pdf字体设为CP1252，这个是需要修改的，<br />
否则pdf输出会报错说找不到字体，我就被这个捆饶了很久，修改如图：<br />
<img alt=" " src="http://xiaoya317.blogchina.com/inc/font.gif" onload="function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10; img_auto_size(this,450,true);&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}" align="center" /></font> </p>
<p><font color="#a52a2a">7、理解几个重要的概念&#183;&#183;&#183;&#183;<br />
&nbsp; a、iReport的输出格式&#183;&#183;&#183;&#183;<br />
&nbsp;&nbsp;&nbsp; iReport的预览输出格式可以支持以下几种：<br />
&nbsp;&nbsp;&nbsp; PDF、HTML、CSV、JAVA2D、Excel、纯文字、JRViewer，其中最常用的是PDF、JRViewer。<br />
&nbsp;&nbsp;&nbsp; 本文以JRViewer为例子。JRViewer是直接以C/S方式作为报表的输出格式，在JFrame框架下输出。Jasperreport提供默认的JRViewer输出类。<br />
&nbsp; b、报表的动态对象变量、参数、字段&#183;&#183;&#183;&#183;<br />
&nbsp;&nbsp;&nbsp; 在使用iReport的过程中会碰到很多与变量（Variables）、参数（Parameters）、字段（Fields）这些有关的内容，我们要介绍这些对象的使用和意义：<br />
&nbsp;&nbsp; &#183;字段（Fields）：是数据库抽取出来的，希望在报表中出现的数据库内容。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 比如一个ID的所有值。$F{ filedsName }<br />
&nbsp;&nbsp; &#183;参数（Parameters）：这是你的应用需要提供给报表的入口，<br />
&nbsp;&nbsp;&nbsp;&nbsp; 比如你希望在报表被解释的时候提供Where语句的条件值，<br />
&nbsp;&nbsp;&nbsp;&nbsp; 那么就可以使用参数（Parameters）。$P{ parameterName }<br />
&nbsp;&nbsp; &#183;变量（Variables）：这是报表中一些逻辑运算的表现，比如统计值。$V{ variablesName }<br />
&nbsp;&nbsp;&nbsp;&nbsp; 每种对象的定义格式如每个对象的后面说明，比如定义一个变量（Variables），<br />
&nbsp;&nbsp;&nbsp;&nbsp; 那么表达式就写成$V{ variablesName }，报表中出现的就是这个变量的名称。<br />
&nbsp;&nbsp; c、编译、静态运行、动态运行&#183;&#183;&#183;<br />
&nbsp;&nbsp;&nbsp;&nbsp; Jasperreport运行时需要的就是一个jasper后缀的文件，编译过程其实就是把jrxml后缀的文件生成jasper后缀的文件。（可以参考Jasperreport的运行原理）&nbsp;静态运行和动态运行是相对的，后者带数据源运行，比如带数据库运行。前者就是静态文本运行，和数据源无关，如果报表中出现和数据源有关的对象，则以null显示。<br />
&nbsp;&nbsp; d、报表的结构&#183;&#183;&#183;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一个报表的结构大致是几个部分：title、pageHeader、columnHeader、detial、columnFooter、pageFooter、summary、groupHeader、groupfooter。<br />
&nbsp;&nbsp;&nbsp;&nbsp; &#183;Title：每个报表一般会有一个名字，比如&#215;&#215;&#215;销售报表，title就是搁置这个名称的最好地方了，当然你也可以根据需要搁置在合适的地方。<br />
&nbsp;&nbsp;&nbsp;&nbsp; &#183;pageHeader：报表的一些公共要素，比如页码、创建时间、创建人等信息放置在这里是比较好的选择。<br />
&nbsp;&nbsp;&nbsp;&nbsp; &#183;columnHeader：无可非议的这里是放置列的名称，记住不是列数据。<br />
&nbsp;&nbsp;&nbsp;&nbsp; &#183;Detial：放置需要循环的数据，比如销售记录数据。<br />
&nbsp;&nbsp;&nbsp;&nbsp; &#183;columnFooter：放置列级别的统计计算值或是列的说明。<br />
&nbsp;&nbsp;&nbsp;&nbsp; &#183;pageFooter：放置页级别的统计值或是页的说明。<br />
&nbsp;&nbsp;&nbsp;&nbsp; &#183;Summary：可能需要对几页（你的报表可能有几个页组成）的统计值。比如50个销售记录共占用了3页，那么放置这些统计记录的统计值最好的地方就是summary。<br />
&nbsp;&nbsp;&nbsp;&nbsp; &#183;groupHeader：每个表的内容可能需要根据某个属性进行划分显示内容和计算内容，比如希望以月份为单位每组分开显示销售记录，那么就可以定义一个组（组的定义参考后文），groupHeader就是放置组说明或是组标志最好的地方。 <br />
&nbsp;&nbsp;&nbsp;&nbsp; &#183;Groupfooter：放置组的统计或是说明</font> </p>
<p><font color="#a52a2a">8、建立一个新的报表&#183;&#183;&#183;&#183;&#183;</font> </p>
<p><font color="#a52a2a">&nbsp; a、新建一个空报表的基本配置<br />
&nbsp;&nbsp;&nbsp; 单击工具栏的第一个工具&#8220;New Report&#8221;，新建一个报表，输入报表名称和定义报表的一些参数，比如名称输入（例子是做一个项目的Bug量统计报表）单击【More&#8230;.】选择标签，填写或是选择XML编码，这是关系到你的XML支持的字符集的选择，请根据需要选择，比如需要你的XML文件支持中文，那么可以输入或是GBK，之后点击【OK】按钮，进入报表的设计界面。<br />
&nbsp; b、定义报表可能需要的字体类型及其属性<br />
&nbsp;&nbsp;&nbsp; 一个报表的内容五花八门，有<nobr><a class="iAs" oncontextmenu="return false;" onmousemove="kwM(4);" onmouseover="kwE(event,4);" style="cursor: hand; color: #0000ff; background-color: transparent; text-decoration: underline" onclick="window.open('http://114.vnet.cn/search_web.html?id=148&amp;kw=表头','_blank');" onmouseout="kwL(event);" target="_blank">表头</a></nobr>、栏位名、数据、其他变量信息等等，如果这些信息都是一致的字体和属性（比如颜色），那么整个报表就死气沉沉，显得很粗糙了。我们可以在为报表添加每个元素时定义元素的属性，但是那是一个多么费时的工作，如果能预先定义一些属性的组合，之后在创建每个元素时只需选择这些组合的其中一个即可，省事又快速。<br />
&nbsp;&nbsp;&nbsp; 单击【预览】－【报表字体】开启自定义组合对话框。单击【New】进入定义详细对话框，如图：<br />
&nbsp;&nbsp;&nbsp; 按照图中的顺序填写信息和步骤，依次定义&#8220;表头&#8221;、&#8220;组&#8221;、&#8220;列&#8221;、&#8220;列内容&#8221;、&#8220;统计计算&#8221;、&#8220;其他&#8221;等6中字体组合。<br />
&nbsp;&nbsp;&nbsp; 注意PDF内嵌字体的选择，如果你需要报表时以PDF文件格式提供，那么对此需要作出选择。<br />
&nbsp; <img alt=" " src="http://xiaoya317.blogchina.com/inc/o_3.jpg" onload="function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10; img_auto_size(this,450,true);&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}" align="center" />9、向表添加对象&#183;&#183;&#183;&#183;<br />
&nbsp; a、添加静态对象&#183;&#183;&#183;<br />
&nbsp;&nbsp; 可以通过工具栏的工具添加静态对象，比如文本，点击【T】，之后在报表的空白处单击，如此即可把静态对象添加到报表，然后拖动对象的边框，使它的大小合适，双击对象弹出对象的属性配置对话框，切换到【Font】Label，在&#8220;Report font&#8221;的ComBox选择&#8220;表头&#8221;字体，（表头字体是前文提供的自定义属性组合），再切换到【Static Text】Label，修改表头的名字，比如&#8220;Bug统计报表&#8221;或是&#8220;销售记录统计表&#8221;等等与业务有关的内容。添加图片，请点击【Image Tool】，之后的操作与Text类似。其他静态对象操作步骤类似。<br />
&nbsp; b、使用连接&#183;&#183;&#183;<br />
&nbsp;&nbsp;&nbsp; 还记得前文提供的（3.2节）配置MySql数据库连接吗？这里我们将要使用前文配置的连接了。选择菜单【建立】－【使用动态连接】开启可选的动态连接，&nbsp;选择任何一个你需要的连接最后【OK】，保存报表，这样你的报表就使用了这个连接了。<br />
&nbsp;&nbsp;<strong> *【特别提示】</strong>此连接必须与以后应用程序使用的连接一致。<br />
&nbsp; c、创建SQL查询语句&#183;&#183;&#183;&#183;<br />
&nbsp;&nbsp;&nbsp; SQL语句是对任何RDBMS起作用的语言，外部用户需要使用这些语言管理维护数据库中的数据，同样的，iReport也是需要这么做，我们需要提供查询数据库的语言－SQL语句，这样，iReport即可通过此SQL语句获取数据，之后组织到报表中并显示出来，以满足用户的需要为目的。<br />
&nbsp;&nbsp;&nbsp; 通过菜单【资料来源】－【报表查询】开启SQL输入对话框，并在【Report SQL Query】 Label中输入SQL语句如图：图中的&#8220;Automatically Retrieve Fields&#8221;checkbox和&#8220;ReadFields&#8221;Button是确认自动获取还是手动获取数据库表的可用Fields。单击【OK】，保存报表。<br />
&nbsp;&nbsp;<img style="width: 528px; height: 470px" height="470" alt=" " src="http://xiaoya317.blogchina.com/inc/o_4.jpg" width="528" onload="function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10; img_auto_size(this,450,true);&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}" align="center" />&nbsp;&nbsp;</font> </p>
<p><font color="#a52a2a">d、创建字段动态对象&#183;&#183;&#183;&#183;&#183;<br />
&nbsp;&nbsp;&nbsp; 报表的动态对象有变量、参数、字段，前文提及了他们的概念，这里将要一一讲解如何使用。字段也就是数据库中的字段，通过菜单【预览】－【报表字段】开启字段的列表（工具条上可以找到相应的工具），可以拖放任意字段到报表的任何位置，比如拖动一部分Bug的内容字段到detial段（内容无关紧要，只要知道原理）。<br />
&nbsp; e、创建组&#183;&#183;&#183;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 组是一个很重要的概念，一个报表可以多个组，每个组以一个关键字为标记，比如希望Bug统计是根据项目（或是产品）进行统计的。那么可以设立一个项目标记的组。如图：<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp; <img style="width: 518px; height: 395px" height="395" alt=" " src="http://xiaoya317.blogchina.com/inc/o_5.jpg" width="518" onload="function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10; img_auto_size(this,450,true);&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}" align="center" />&nbsp;&nbsp;&nbsp; </font></p>
<p><font color="#a52a2a">组的参数设定可以看界面即可理解部分，其中最主要的是&#8220;Group expression&#8221;，这是必须输入格式正确的并且存在的字段名称，本文的&#8220;proname&#8221;是【字段】中的一个元素。依此类推，建立其他的组对象。<br />
&nbsp;&nbsp;&nbsp; 每建立一个组，在报表的界面上都会出现该组对应的段，如图：他们是首尾对应出现的。（Header和Footer）<br />
&nbsp;&nbsp;&nbsp; <img style="width: 549px; height: 410px" height="410" alt=" " src="http://xiaoya317.blogchina.com/inc/o_6.jpg" width="549" onload="function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10; img_auto_size(this,450,true);&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}" align="center" /><br />
&nbsp; <br />
&nbsp; f、添加参数和使用参数&#183;&#183;&#183;&#183;<br />
&nbsp;&nbsp;&nbsp; 我们重申参数作用，一般是需要外界提供参数给报表的入口，比如SQL语句的where条件的表达式。通过【预览】－【报表参数】开启报表参数列表对话框（工具条上可以找到相应的工具）。如图：输入名称及其他参数。【ok】,保存报表。<br />
&nbsp;&nbsp;&nbsp; <img alt=" " src="http://xiaoya317.blogchina.com/inc/o_7.jpg" onload="function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10; img_auto_size(this,450,true);&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}" align="center" />&nbsp;&nbsp;&nbsp; 那么如何使用呢？打开SQL语句对话框，参考&#8220;5.3创建SQL查询语句&#8221;，这时候的SQL语句应该是：SELECT * FROM bugs&nbsp; where proname=$P{ProjectName} order by proname,modulename<br />
&nbsp;&nbsp;&nbsp; 注意其中的红体字部分，就是把刚才定义的<nobr><a class="iAs" oncontextmenu="return false;" onmousemove="kwM(2);" onmouseover="kwE(event,2);" style="cursor: hand; color: #0000ff; background-color: transparent; text-decoration: underline" onclick="window.open('http://114.vnet.cn/search_web.html?id=148&amp;kw=变量','_blank');" onmouseout="kwL(event);" target="_blank">变量</a></nobr>运用到SQL语句了。这样当应用提供参数时，只要指定提供给这个参数，那么报表解释引擎即可替换这些变量然后再执行SQL语句，在第二部分提到编程时，会提供参数设定代码。<br />
&nbsp; <br />
&nbsp; g、添加变量和使用变量&#183;&#183;&#183;&#183;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 变量的定义类似参数，通过【预览】－【报表变量】开启报表变量列表对话框（工具条上可以找到相应的工具），如图，图中定义的变量的作用是：定义一个Bug的计数器，数据类型是java.lang.Integer,使用Count函数进行统计字段tester，作用范围是模块组，也就是统计模块的Bug量。其中的tester可以改成其他非组对象，比如proname是组对象，就不要用作这里的统计参数。以上提供的是自定义变量，其实iReport系统还有提供一些内嵌（Buildin）的变量，比如页码，行记录数等，视需要而使用。<br />
&nbsp;&nbsp; <img style="width: 538px; height: 575px" height="575" alt=" " src="http://xiaoya317.blogchina.com/inc/o_8.jpg" width="538" onload="function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10; img_auto_size(this,450,true);&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}" align="center" /><br />
&nbsp; <br />
&nbsp; 10、最后的报表&#183;&#183;&#183;&#183;<br />
&nbsp;&nbsp;&nbsp; a、完成后的报表&#183;&#183;&#183;<br />
&nbsp;&nbsp;&nbsp;&nbsp; <img height="311" alt=" " src="http://xiaoya317.blogchina.com/inc/o_9.jpg" width="539" onload="function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10; img_auto_size(this,450,true);&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}" align="center" /><br />
&nbsp;&nbsp;&nbsp; b、预览报表&#183;&#183;&#183;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 点击动态运行报表，出现如图内容：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img height="323" alt=" " src="http://xiaoya317.blogchina.com/inc/o_10.jpg" width="531" onload="function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10; img_auto_size(this,450,true);&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}" align="center" /></font> </p>
<p><font color="#a52a2a">&nbsp; 11、在jsp中调用报表&#183;&#183;&#183;&#183;&#183;<br />
&nbsp;&nbsp;&nbsp; 解决这个问题也用了我差不多2天时间:(，但总算是搞定了&#183;&#183;&#183;&#183;&#183;<br />
&nbsp;&nbsp;&nbsp; 下面分别介绍以pdf格式和以html格式显示报表&#183;&#183;&#183;&#183;<br />
&nbsp;&nbsp; a、pdf格式ireport_pdf.jsp&#183;&#183;&#183;&#183;</font> </p>
<p><font color="#a52a2a">&nbsp;&nbsp; &lt;%@ page import="net.sf.jasperreports.engine.*" %&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;%@ page import="java.util.*" %&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;%@ page import="java.io.*" %&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;%@ page import="java.sql.*" %&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;%<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //报表编译之后生成的.jasper 文件的存放位置<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File reportFile = new File(application.getRealPath("ireport/xueji.jasper"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //这个是用来联接我的mysql 的JDBC URL<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String url="jdbc:mysql://localhost:3306/xueji?useUnicode=true&amp;characterEncoding=gb2312";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class.forName("org.gjt.mm.mysql.Driver").newInstance();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //传递报表中用到的参数值<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Map parameters = new HashMap();<br />
&nbsp;&nbsp;&nbsp;&nbsp; //"Name"是报表中定义过的一个参数名称,其类型为String 型</font> </p>
<p><font color="#a52a2a">&nbsp;&nbsp;&nbsp;&nbsp; parameters.put("banji", new String(" c1"));<br />
&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("---------conn-------------");<br />
&nbsp;&nbsp;&nbsp;&nbsp; //连接到<nobr><a class="iAs" oncontextmenu="return false;" onmousemove="kwM(5);" onmouseover="kwE(event,5);" style="cursor: hand; color: #0000ff; background-color: transparent; text-decoration: underline" onclick="window.open('http://114.vnet.cn/search_web.html?id=148&amp;kw=数据库','_blank');" onmouseout="kwL(event);" target="_blank">数据库</a></nobr><br />
&nbsp;&nbsp;&nbsp;&nbsp; Connection conn = DriverManager.getConnection(url,"root","root");<br />
&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("---------Jasper begin-------------");<br />
&nbsp;&nbsp;&nbsp;&nbsp; //在控制台显示一下报表文件的物理路径<br />
&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(reportFile.getPath());<br />
&nbsp;&nbsp;&nbsp;&nbsp; byte[] bytes=JasperRunManager.runReportToPdf(reportFile.getPath(),parameters,conn);</font> </p>
<p><font color="#a52a2a">&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("---------Jasper end-------------");<br />
&nbsp;&nbsp;&nbsp;&nbsp; response.setContentType("application/pdf");<br />
&nbsp;&nbsp;&nbsp;&nbsp; response.setContentLength(bytes.length);<br />
&nbsp;&nbsp;&nbsp;&nbsp; ServletOutputStream ouputStream = response.getOutputStream();<br />
&nbsp;&nbsp;&nbsp;&nbsp; ouputStream.write(bytes, 0, bytes.length);<br />
&nbsp;&nbsp;&nbsp;&nbsp; ouputStream.flush();<br />
&nbsp;&nbsp;&nbsp;&nbsp; ouputStream.close();<br />
&nbsp;&nbsp; %&gt; </font></p>
<p><!--page import="net.sf.jasperreports.engine.*" --><font color="#a52a2a">&nbsp;&nbsp;&nbsp;b、html格式ireport_html.jsp&#183;&#183;&#183;&#183;</font> </p>
<p><font color="#a52a2a">&nbsp;<!--page contenttype="text/html; charset=gb2312" --><br />
&nbsp;&nbsp; <!--page import="net.sf.jasperreports.engine.*" --><br />
&nbsp;&nbsp; <!--page import="net.sf.jasperreports.engine.export.*" --><br />
&nbsp;&nbsp; <!--page import="net.sf.jasperreports.engine.util.*" --><br />
&nbsp;&nbsp; <!--page import="java.util.*" --><br />
&nbsp;&nbsp; <!--page import="java.io.*" --><br />
&nbsp;&nbsp; <!--page import="java.sql.*" --><br />
&nbsp;&nbsp; &lt;%</font> </p>
<p><br />
<font color="#a52a2a">&nbsp;&nbsp;&nbsp; File reportFile = new File(application.getRealPath("/ireport/xueji.jasper"));<br />
&nbsp;&nbsp;&nbsp; JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());<br />
&nbsp;&nbsp;&nbsp; Map parameters = new HashMap();<br />
&nbsp;&nbsp;&nbsp; parameters.put("baiji", "c1");<br />
&nbsp;&nbsp; //parameters.put("BaseDir", reportFile.getParentFile());&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; //JRBeanArrayDataSource jrDataSource = new JRBeanArrayDataSource(objects);//objects为要打印的实体数组；</font> </p>
<p><font color="#a52a2a">&nbsp;&nbsp;&nbsp; Class.forName("org.gjt.mm.mysql.Driver");<br />
&nbsp;&nbsp;&nbsp; Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/xueji","root","root");<br />
&nbsp;&nbsp;&nbsp; JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; JRHtmlExporter exporter = new JRHtmlExporter();<br />
&nbsp;&nbsp;&nbsp; StringBuffer sbuffer = new StringBuffer();</font> </p>
<p><font color="#a52a2a">&nbsp;&nbsp;&nbsp; Map imagesMap = new HashMap();<br />
&nbsp;&nbsp;&nbsp; session.setAttribute("IMAGES_MAP", imagesMap);<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);<br />
&nbsp;&nbsp;&nbsp; exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);<br />
&nbsp;&nbsp;&nbsp; //exporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, imagesMap);<br />
&nbsp;&nbsp;&nbsp; //exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "/ireport/ireport_html.Image?image="); <br />
&nbsp;&nbsp;&nbsp; //exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, "<br style="page-break-before: always" />
");<br />
&nbsp;&nbsp;&nbsp; exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE);<br />
&nbsp;&nbsp;&nbsp; exporter.exportReport();<br />
&nbsp;&nbsp;&nbsp; //out.flush();<br />
&nbsp;&nbsp;&nbsp; conn.close();<br />
&nbsp;&nbsp; % &gt;</font> </p>
<p><font color="#a52a2a">注意：以html格式调用主要要注意//exporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, imagesMap);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "images目录的路径?image=");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在生成html预览的时候会生成一个px文件，而这个images_uri的路径就是那个px的路径，建议不用，就用下面<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 的语句就可以了&#183;&#183;&#183;&#183; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE);&nbsp;&nbsp;&nbsp; <br />
而这个语句则是处理分页用的&#183;&#183;&#183;&#183;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
//exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, "<br style="page-break-before: always" />
");</font> </p>
<p><br />
<font color="#a52a2a">需要注意的地方&#183;&#183;&#183;&#183;<br />
必须在tomcat5以上版本中运行&#183;&#183;&#183;&#183;<br />
在运行的时候还要将jasperreports/lib下的包全部拷到tomcat下你所放文件目录下的win-inf/lib下&#183;&#183;&#183;<br />
特别要注意的是看看ireport/lib下的包与jasperreports/lib的包是否兼容&#183;&#183;&#183;<br />
之前我的一直有问题就是因为我的发布环境是jasperreports-0.6.7.jar而运行环境是jasperreports-0.6.8.jar&#183;&#183;&#183;<br />
这样也会出现错误的&#183;&#183;&#183;&#183;</font> </p>
<p><font color="#a52a2a">参考资料&#183;&#183;&#183;&#183;<br />
感谢&#183;&#183;&#183;<br />
</font><a href="http://www-128.ibm.com/developerworks/cn/java/j-ireport/?ca=dwcn-newsletter-java"><font color="#a52a2a">http://www-128.ibm.com/developerworks/cn/java/j-ireport/?ca=dwcn-newsletter-java</font> </a><br />
<a href="http://blog.csdn.net/jemlee2002/archive/2004/10/05/125107.aspx"><font color="#a52a2a">http://blog.csdn.net/jemlee2002/archive/2004/10/05/125107.aspx</font> </a><font color="#a52a2a"></font></p>
<img src ="http://www.blogjava.net/yangmage/aggbug/253507.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yangmage/" target="_blank">Solar</a> 2009-02-06 10:42 <a href="http://www.blogjava.net/yangmage/articles/253507.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>iReport &amp; JasperReport配置及用户简明手册 </title><link>http://www.blogjava.net/yangmage/articles/253506.html</link><dc:creator>Solar</dc:creator><author>Solar</author><pubDate>Fri, 06 Feb 2009 02:41:00 GMT</pubDate><guid>http://www.blogjava.net/yangmage/articles/253506.html</guid><wfw:comment>http://www.blogjava.net/yangmage/comments/253506.html</wfw:comment><comments>http://www.blogjava.net/yangmage/articles/253506.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangmage/comments/commentRss/253506.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangmage/services/trackbacks/253506.html</trackback:ping><description><![CDATA[<h2 class="diaryTitle">iReport &amp; JasperReport配置及用户简明手册- -</h2>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;</p>
<p>关于iReport和JasperReport的简明手册</p>
<p>By Gem 伍子轩</p>
<br />
<font size="+0"><font size="+0">
<p><strong></strong></p>
<h1><font size="+0">1</font>安装</h1>
<h2><font size="+0">1.1 iReport</font>的安装</h2>
<font size="+0">iReport</font>直接解压后，将<font size="+0">J2SDK\lib</font>目录下的<font size="+0">tools.jar</font>拷贝到<font size="+0">iReport\lib</font>目录下，然后在<font size="+0">iReport</font>目录下运行<font size="+0">iReport.bat</font>即可。<br />
需要注意的是<font size="+0">tools.jar</font>的版本必须要与本机安装的<font size="+0">jre</font>一致，也就是说，如果系统安装的是<font size="+0">jre1.4.2</font>就必须用<font size="+0">jdk1.4.2</font>的<font size="+0">tools.jar</font>。<br />
<h2><font size="+0">1.2 JapserReport</font>开发（运行）环境的搭建</h2>
<p><font size="+0">JasperReport</font>的开发环境必须要导入以下所有包：</p>
<p><font size="+0">1．&nbsp; JasperReport</font>包，如<font size="+0">jasperreports-0.6.1.jar</font>；</p>
<p><font size="+0">2．&nbsp; Aparche Common</font>包，包括<font size="+0">logging</font>、<font size="+0">digester</font>、<font size="+0">beanutils</font>、<font size="+0">collections</font>、<font size="+0">logging-api</font>；</p>
<p><font size="+0">3．&nbsp; iText</font>包，包括<font size="+0">itext-1.1.jar</font>和<font size="+0">iTextAsian.jar</font>（用于输出中文字符到<font size="+0">PDF</font>文件）</p>
<p>以上所有包（除了<font size="+0">iTextAsian.jar</font>）都已经包含在<font size="+0">iReport\lib</font>目录下。</p>
<font size="+0"><font size="+0">
<h1><font size="+0">2 </font>开发流程</h1>
<p>用<font size="+0">iReport</font>可视化编辑生成的文件是<font size="+0">jrxml</font>文档，这是一种<font size="+0">xml</font>文件，记录了一份<font size="+0">report</font>的详细信息，我们可以直接用写字板打开它编辑，<font size="+0">iReport</font>就是一个方便我们生成和编辑<font size="+0">jrxml</font>文件的工具，它也可以很方便地将<font size="+0">jrxml</font>文件编译成<font size="+0">jasper</font>报表文件。</p>
<p><font size="+0">jrxml</font>文件通过<font size="+0">Jasper</font>编译之后就变成了<font size="+0">jasper</font>文件，这份文件才是真正在程序中调用生成报表的<font size="+0">report</font>文件。</p>
<p>但是有一点要注意的是，<font size="+0">jasper</font>的各个版本编译出来的<font size="+0">jasper</font>文件并不兼容，就是说用<font size="+0">0.6.1</font>版编译出来的文件用<font size="+0">0.6.4</font>版调用是会出错的，而<font size="+0">iReport</font>自带的<font size="+0">Jasper</font>版本是<font size="+0">0.6.1</font>，而<font size="+0">jasper</font>的最新版本是<font size="+0">0.6.4</font>。所以为了保持通用性，我建议只用<font size="+0">iReport</font>来开发编辑<font size="+0">jrxml</font>文件，而不编译成<font size="+0">jasper</font>文件，在我们的打印报表程序中再即时编译一次。虽然这样效率可能会低了一点，但是保证了不同版本的兼容性。</p>
<p>在我们的程序中，要调用<font size="+0">Jasper</font>的话，首先要得到一个数据库的<font size="+0">Connection</font>，形如：<font size="+0">Connection con = ...</font></p>
<p>需要往<font size="+0">JasperReport</font>传参数的话只需要新建一个<font size="+0">Map</font>，以参数名作为<font size="+0">key</font>，需要传入的对象作为<font size="+0">value</font>，譬如：</p>
<p><font size="+0">Map props = new HashMap();</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.put("name", new String("name"));</font></p>
<p>需要多个参数只需分别<font size="+0">put</font>进<font size="+0">Map</font>里去就可以了。</p>
<font size="+0"><font size="+0">
<p><font size="+0">JasperReport</font>有如下几个主要的<font size="+0">Manager</font>：</p>
<table cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td valign="top" width="163"><strong><font size="+0">JasperCompileManager<br />
            </font></strong></td>
            <td valign="top" width="405">
            <p>将<font size="+0">jrxml</font>文件编译成<font size="+0">jasper</font>文件或<font size="+0">JasperReport</font>对象</p>
            </td>
        </tr>
        <tr>
            <td valign="top" width="163"><strong><font size="+0">JasperFillManager<br />
            </font></strong></td>
            <td valign="top" width="405">
            <p>从数据源中获取数据并填充<font size="+0">jasper</font>文件或<font size="+0">JasperReport</font>对象，产生<font size="+0">JasperPrint</font>对象</p>
            </td>
        </tr>
        <tr>
            <td valign="top" width="163"><strong><font size="+0">JasperPrintManager<br />
            </font></strong></td>
            <td valign="top" width="405">
            <p>将<font size="+0">JasperPrint</font>对象直接输出到打印机打印</p>
            </td>
        </tr>
        <tr>
            <td valign="top" width="163"><strong><font size="+0">JasperExportManager<br />
            </font></strong></td>
            <td valign="top" width="405">
            <p>将<font size="+0">JasperPrint</font>对象导出成<font size="+0">PDF</font>或<font size="+0">HTML</font>文件（或流）</p>
            </td>
        </tr>
        <tr>
            <td valign="top" width="163"><strong><font size="+0">JasperRunManager<br />
            </font></strong></td>
            <td valign="top" width="405">
            <p>运行一个<font size="+0">jasper</font>文件或<font size="+0">JasperReport</font>对象并输出到<font size="+0">PDF</font>或<font size="+0">Html</font>文件（或流）中，我的理解是等于集成了<strong><font size="+0">JasperFillManager</font></strong>和<strong><font size="+0">JasperExportManager</font></strong>的功能</p>
            </td>
        </tr>
    </tbody>
</table>
<p>对于上述对象的详细说明请参阅<font size="+0">JasperReport</font>的文档。</p>
<p>例程：</p>
例程：
<p><font size="+0">public static void main(String[] args) {</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp; try {</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class.forName("org.gjt.mm.mysql.Driver");</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connection con = DriverManager.getConnection(</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "jdbc:mysql://wes:3306/umpdb?useUnicode=true&amp;characterEncoding=GBK", "root", "elite");</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File f1 = new File("Account.jrxml");</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File f2 = new File("Contact.jrxml");</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JasperReport main = JasperCompileManager.compileReport(f1</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getAbsolutePath());</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JasperReport report = JasperCompileManager.compileReport(f2</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getAbsolutePath());</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Map props = new HashMap();</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.put("subreport", report);</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JasperPrint print = JasperFillManager.fillReport(main, props,con);</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //JasperPrintManager.printReport(print,true);</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JasperExportManager.exportReportToPdfFile(print, "a.pdf");</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //JasperRunManager.runReportToPdfFile("Account.jasper", "a.pdf", props, con);</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp; } catch (ClassNotFoundException e) {</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TODO </font>自动生成<font size="+0"> catch </font>块</p>
<p><font size="+0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp; } catch (SQLException e) {</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TODO </font>自动生成<font size="+0"> catch </font>块</p>
<p><font size="+0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp; } catch (JRException e) {</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TODO </font>自动生成<font size="+0"> catch </font>块</p>
<p><font size="+0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();</font></p>
<p><font size="+0">&nbsp;&nbsp;&nbsp; }</font></p>
<p><font size="+0">&nbsp; }</font></p>
<font size="+0"><font size="+0">
<h1><font size="+0">3 </font>注意事项</h1>
<p><font size="+0">1</font>．<font size="+0">iReport</font>中新建中文报表的时候记得要输入<font size="+0">XML</font>编码<font size="+0">GB2312</font>。</p>
<p><font size="+0">2</font>．<font size="+0">iReport</font>中定义中文字体的时候，要选择<font size="+0">PDF Font Name</font>为<font size="+0">STSong-Light</font>（宋体）、<font size="+0">MHei-Medium</font>（黑体）、<font size="+0">MSung-Light</font>，在<font size="+0">PDF Encoding</font>中选择<font size="+0">GB-UCS2-H(Chinese Simplified)</font>，否则输出到<font size="+0">PDF</font>时会乱码。</p>
<p><font size="+0">3</font>．用<font size="+0">Report SQL</font>查询之后，可能会出现某些字段没有自动建立<font size="+0">Field</font>，就需要在<font size="+0">Field</font>中手动定义了。</p>
</font></font></font></font></font></font></font></font>
<img src ="http://www.blogjava.net/yangmage/aggbug/253506.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yangmage/" target="_blank">Solar</a> 2009-02-06 10:41 <a href="http://www.blogjava.net/yangmage/articles/253506.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>