﻿<?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-JAVA涂鸦-文章分类-Jasperreport </title><link>http://www.blogjava.net/rickhunter/category/7163.html</link><description>关于JAVA的点点滴滴</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 20:23:39 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 20:23:39 GMT</pubDate><ttl>60</ttl><item><title>[转贴]JasperReport 学习之路</title><link>http://www.blogjava.net/rickhunter/articles/28863.html</link><dc:creator>千山鸟飞绝</dc:creator><author>千山鸟飞绝</author><pubDate>Sat, 21 Jan 2006 03:22:00 GMT</pubDate><guid>http://www.blogjava.net/rickhunter/articles/28863.html</guid><wfw:comment>http://www.blogjava.net/rickhunter/comments/28863.html</wfw:comment><comments>http://www.blogjava.net/rickhunter/articles/28863.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rickhunter/comments/commentRss/28863.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rickhunter/services/trackbacks/28863.html</trackback:ping><description><![CDATA[
		<p>最近工作中用到报表，而我在学习JasperReport的过程中遇到了很多问题（主要是国内的资料太少了），网上很少找得到，在此我就把我找到的一些资料和大家共享，希望能对大家有所帮助。 <br />1、JasperReport和iReport的资源，最新版本可以到下面官方网站得到 </p>
		<p>iReport官方网站： <br /><a href="http://ireport.sourceforge.net/">http://ireport.sourceforge.net</a><br />JasperReport官方网站： <br /><a href="http://jasperreports.sourceforge.net/">http://jasperreports.sourceforge.net</a></p>
		<p>2、安装 <br />1）、JDK的安装，并配置JAVA_HOME <br />比如我的JAVA_HOME路径如下： <br />JAVA_HOME　　D:\Program Files\j2sdk1.4.2_03 </p>
		<p>2）、由于中文的问题，所以还需要下载：itext-1.02b.jar和iTextAsian.jar包 <br />下载地址：<a href="http://itext.sourceforge.net/downloads/iTextAsian.jar">http://itext.sourceforge.net/downloads/iTextAsian.jar</a><br />并在CLASSPATH中设置 <br />例如我的CLASSPATH如下： <br />CLASSPATH <br />E:\Program Files\Apache GroupTomcat4.1\webapps	\estreport\WEB-INF\lib\itext-1.02b.jar;E:\Program </p>
		<p>Files\Apache GroupTomcat 4.1\webapps\	estreport\WEB-INF\lib\iTextAsian.jar;E:\Program Files\Apache </p>
		<p>GroupTomcat 4.1\webapps	\estreport\WEB-INF\lib;D:	\ools\iReport0.2.3\lib </p>
		<p>3）、iReport的安装iReport只要解压就OK，如果没有安装Ant，可以直接在iReport下的noAnt目录下， <br />运行startup.bat就可以了，这样iReport就可以启动了 </p>
		<p>4）、JasperReport <br />Jasperreport不需要任何配置，你只需将下载以后的jar包放到classpath下即可 <br />5）、数据库的JDBC驱动包 <br />加入到CLASSPATH中 </p>
		<p>3、详细资源 <br />iReport官方提供了一些关于iReport视频，对于初学者很有帮助： <br />地址：<a href="http://ireport.sourceforge.net/docs.html">http://ireport.sourceforge.net/docs.html</a></p>
		<p>JasperReport官方提供的使用指南 <br />地址：<a href="http://jasperreports.sourceforge.net/tutorial/index.html">http://jasperreports.sourceforge.net/tutorial/index.html</a></p>
		<p>JasperReport提供的一些例子： <br />地址：<a href="http://jasperreports.sourceforge.net/samples/index.html">http://jasperreports.sourceforge.net/samples/index.html</a></p>
		<p>4、常见问题 <br />1）、iReport中提示框输入中文是不能正常显示，请将iReport下lib中的这个包删除tinylaf.jar <br />2）、在iReport中运行报表时如果出现乱码问题，请检查itext-1.02b.jar和iTextAsian.jar这两个包是否加到CLASSPATH <br />3）、在jsp或servlet高度报表时出现乱码或不显示，请检查你在报表设计过程中所设置的字体及其编码 <br />比如：pdfname、pdfencoding <br />5、下面是两个调试例子 <br />Servlet: <br />import javax.servlet.*; <br />import javax.servlet.http.*; <br />import dori.jasper.engine.*; <br />import java.io.*; <br />import java.util.*; <br />import java.sql.*; </p>
		<p>/** <br />* @author Administrator <br />* <br />* To change the template for this generated type comment go to <br />* Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments <br />*/ <br />public class TestReport extends HttpServlet { </p>
		<p>public void doGet(HttpServletRequest request, HttpServletResponse response) <br />throws ServletException, IOException { <br />Connection conn = null; </p>
		<p>try { </p>
		<p>Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); <br />conn = <br />DriverManager.getConnection( </p>
		<p>
				<br />"jdbc:microsoft:sqlserver://192.168.0.10:1433;DatabaseName=am;user=sa;password=sa"); </p>
		<p>ServletContext servletContext =this.getServletContext(); <br />File reportFile = new File(servletContext.getRealPath("test/iteminfo.jasper")); <br />Map parameters = new HashMap(); <br />Integer i=new Integer(8); <br />parameters.put("pjId", i); <br />byte[] bytes = <br />JasperRunManager.runReportToPdf( <br />reportFile.getPath(), <br />parameters, <br />conn); <br />response.setContentType("application/pdf"); <br />response.setContentLength(bytes.length); <br />ServletOutputStream ouputStream = response.getOutputStream(); <br />ouputStream.write(bytes, 0, bytes.length); <br />ouputStream.flush(); <br />ouputStream.close(); <br />} catch (JRException jre) { <br />System.out.println("JRException:" + jre.getMessage()); <br />} catch (Exception e) { <br />System.out.println("Exception:" + e.getMessage()); <br />} </p>
		<p>} </p>
		<p>public void doPost( <br />HttpServletRequest request, <br />HttpServletResponse response) <br />throws ServletException, IOException { </p>
		<p>doGet(request, response); </p>
		<p>} </p>
		<p>} </p>
		<p>
				<br /> <br />1 首先看看</p>
		<p>
				<a href="http://plateau.sicool.com/main.html">http://plateau.sicool.com/main.html</a>
				<br />上的三篇ireport和Jasperreport整合开发报表向导（一）（二）（三）<br />看完理解并自己运行一下，OK，你入门了</p>
		<p>
				<br />2 去找一份TheJasperReportsUltimateGuide.1.0.pdf</p>
		<p>看完之后你就能了解JasperReport生成的基本过程及原理，里面也回答了很多<br />刚接触这个报表工具会产生的疑问</p>
		<p>3 论坛上的经验</p>
		<p>Java研究的论坛上有很多关于JasperReport及iReport的经验及问题解答，所以<br />大家在提问的时候不妨多翻翻论坛上的帖子，很多你要问的问题都能找到答案，<br />还有很多宝贵的经验<br />当然说起论坛最正宗还是<br /><a href="https://sourceforge.net/projects/ireport/">https://sourceforge.net/projects/ireport/</a><br /><a href="https://sourceforge.net/projects/jasperreports/">https://sourceforge.net/projects/jasperreports/</a><br />大家可以到sourceforge.net去看看，论坛上提供搜索，也能翻到很多东西，顺便<br />练练你的英语</p>
		<p>4 学习JasperReport的Samples</p>
		<p>解压jasperreports-0.5.0-project.zip 后目录jasperreportsdemosamples<br />下的例子，看看这些例子是你关于这个报表工具提升能力的最好最快的方式，<br />我会在下面贴上各个例子的简要说明。<br />要运行sample下的例子，首先你要安装ant，并设置好环境变量<br />如ANT_HOME    值为   D:Installant161<br />然后到dos方式下，到某一个sample的目录，比如到<br />jasperreportsdemosamplesalterdesign目录下<br />运行 ant 则会编译报表文件<br />运行 ant view 则会展现报表</p>
		<p>5 比上面更好的资料是什么？</p>
		<p>就是JasperReport的源代码，看懂源代码，JasperReport<br />就是在你脑子里的了，你想干什么都行了，优化代码，覆写，继承他的类，实现个性<br />化的功能，甚至你可以参考他的思想，升华一下，做一个你自己的报表<br /> <br />1. alterdesign</p>
		<p>该例子演示了报表编译后，在报表展现的时候如何动态的控制其中的元素<br />比如让某一个矩形变色或其他</p>
		<p>2. antcompile<br /> <br />演示如何让 ant 来编译</p>
		<p>3. chart<br /> <br />演示了如何在报表中添加图像，JasperReport是用Scriptlet的方式<br />往报表中添加图像，而Scriptlet是调用也是开源的jfreechart的Api来<br />生成图形，去jfreechart看一下，该工具能的图形生成能力也很强</p>
		<p>4. datasource<br /> <br />演示了如何在报表中使用各种数据源，能够使用beanarray<br />beancollection，也可以用自定义的数据源，只要继承了JRDataSource的<br />两个接口，这个能给用户提供非常大的灵活性，报表的数据不用局限于一<br />条Sql语句，也可以使用存储过程，对生成报表中的数据也可以排序，二<br />次检索，等等</p>
		<p>5. fonts<br /> <br />各种字体的演示</p>
		<p>6. horizontal<br /> <br />演示了水平分栏的报表，演示报表中分了三栏，其中还用到了<br />textFieldExpression，就像if语句的效果来选择输出的内容</p>
		<p>7. hyperlink<br /> <br />演示了各种样式的链接</p>
		<p>8. images </p>
		<p>演示了如何在报表中加入图像以及图像的显示方式</p>
		<p>9. jasper<br /> <br />演示了分组分栏的报表，演示中用了2次group</p>
		<p>10. jcharts </p>
		<p>演示了调用另一个开源的API jcharts来往报表中加入分析图形，原理同<br />上chart，如果jfreechart都还不能满足你分析图形的要求，那到jcharts<br />里找找看吧，说不定有</p>
		<p>11. landscape<br /> <br />演示横向的报表</p>
		<p>12. nopagebreak<br /> <br />演示比如在IE中不分页的方式打印出报表的内容，通过这个演示也可以<br />了解报表输出如何配置参数</p>
		<p>13. noreport </p>
		<p>演示了如何直接通过java程序生成JasperPrint对象来输出</p>
		<p>14. noxmldesign </p>
		<p>演示了如何直接通过java程序生成JasperDesign对象来动态的生成报<br />表，根据这个例子，用户可以作出自定义选列的报表,当然比较麻烦，<br />而且肯定自己要补充他的API库<br />（JasperReport真是强大啊，呵呵) </p>
		<p>15. pdfencrypt<br /> <br />演示了pdf的输出方式，可以给pdf文件加密码，其实就是pdf输出方式的<br />参数配置，具体有那些参数可配置，去看看API吧</p>
		<p>16. printservice</p>
		<p>演示了如何直接打印报表</p>
		<p>17. query </p>
		<p>演示了如何让查询的sql动态起来，比如你可以通过一个Jsp页面传<br />报表的sql的where条件，order条件，甚至整个sql语句</p>
		<p>18. rotation </p>
		<p>演示了文字纵向显示的报表</p>
		<p>19. scriptlet<br /> <br />演示了如何继承JRDefaultScriptlet，并加入自己的处理语句，这个功能<br />可是很强大的哦，看看这些接口<br />beforeReportInit() afterReportInit() beforePageInit()<br />afterPageInit() beforeColumnInit() afterColumnInit() <br />beforeGroupInit(String groupName)<br />afterGroupInit(String groupName) <br />看看这些名字就知道你能完成那些功能，比如显示一列数据后，马上跟<br />上该列数据的分析图形，当然你也可以加上自己的方法并在报表中调用</p>
		<p>20. shapes </p>
		<p>演示了JasperReport中自带的图形，及能配置的参数<br />当然你也能继承或者覆写JasperReport中的Api生成你要的图形，</p>
		<p>21. stretch </p>
		<p>演示了如何处理报表中数据拉伸以及带来周围的线及框的拉伸，<br />你能了解到虽然黑框式表格不是JasperReport中缺省的展现方式，<br />但在JasperReport中不难实现</p>
		<p>22. subreport </p>
		<p>演示了子报表，还告诉你一个报表中可以有n个子报表，子报表中还可以<br />嵌套子报表</p>
		<p>23. tableofcontents </p>
		<p>演示了如何生成一个有目录的，复杂的报表</p>
		<p>24. unicode </p>
		<p>演示了各种 字符编码</p>
		<p>25. webapp </p>
		<p>演示了如何把报表放到一个JavaWeb项目中，可以用Jsp Servlet<br />applet，笔者做了一个有参数页面，可以选择html pdf applet<br />输出方式的报表，有兴趣的 我可以在后面放上代码 </p>
<img src ="http://www.blogjava.net/rickhunter/aggbug/28863.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rickhunter/" target="_blank">千山鸟飞绝</a> 2006-01-21 11:22 <a href="http://www.blogjava.net/rickhunter/articles/28863.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转贴]Jasperreport 报表开发入门指南</title><link>http://www.blogjava.net/rickhunter/articles/28862.html</link><dc:creator>千山鸟飞绝</dc:creator><author>千山鸟飞绝</author><pubDate>Sat, 21 Jan 2006 03:14:00 GMT</pubDate><guid>http://www.blogjava.net/rickhunter/articles/28862.html</guid><wfw:comment>http://www.blogjava.net/rickhunter/comments/28862.html</wfw:comment><comments>http://www.blogjava.net/rickhunter/articles/28862.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rickhunter/comments/commentRss/28862.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rickhunter/services/trackbacks/28862.html</trackback:ping><description><![CDATA[<h4>概述</h4>&nbsp;&nbsp;&nbsp; Jasperreport是<a href="http:///" target="_blank" class="l2">http://www.sourceforge.net</a>上一个优秀的开源的报表工具，其强大的功能及免费的特性得到了广大的认可和赞誉，现在的最新版本是Jasperreport0.6.1。下载地址是<br><a href="https://sourceforge.net/projects/jasperreports/">https://sourceforge.net/projects/jasperreports/</a>。<br>&nbsp;&nbsp;&nbsp; iReport是jasperreport的一个IDE的开发工具，使Jasperreport变得更易用，其最新版本是iReport0.4.0支持到Jasperreport0.6.1，和Jasperreport一样也在不断的更新中。下载地址是<a href="https://sourceforge.net/projects/ireport/">https://sourceforge.net/projects/ireport/</a>。<br>&nbsp;&nbsp;&nbsp; 关于利用这两个工具开发Web报表，这里已经有几份很好的材料：<br>&nbsp;&nbsp;&nbsp; JasperReport与iReport的配置与使用.pdf（该文档可用于一开始入门熟悉这两个工具）<br>&nbsp;&nbsp;&nbsp; TheJasperReportsUltimateGuide.1.0.pdf&nbsp;（这个本是一份收费的文档，讲述了Jasperreport生成的原理方面的知识，如果你打算能熟练的使用Jasperreport这个报表工具，需要好好看这份英文资料的）<br>&nbsp;&nbsp;&nbsp; <a href="http:///" target="_blank" class="l2">http://www.javaresearch.org/forum/thread.jsp?column=316&amp;thread=14374</a><br>（这是我在论坛上写的一个另一篇入门指南）---（转贴者：无法打开此连接）<br><br><h4>第一次运行</h4>&nbsp;&nbsp;&nbsp; 第一次总是比较痛苦，使用这个报表工具也是，下面是我总结出的一些运行中比较容易出现的问题。<br>我的总结是建立在使用iReport0.4.0&nbsp;＋&nbsp;Jasperreport0.6.1）。至于这两者的组合，我用到现在还是觉得比较顺的。从souceforge
上下载iReport-0.4.0.zip&nbsp;解压后，要注意一点，把你的JDK的tools.jar拷到你解压后的iReport的lib目录下，做中文
的pdf报表还需要把iTextAsian.jar拷到lib下，如果你用的是Oracle的数据库，那么你还需要把class12.jar也就是
Oracle的Jdbc包拷到lib下，其他数据库也一样。<br>好了准备工作做好了，运行iReport.bat。如果比较看到UI界面，说明<br>iReport成功运行了。<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;如果dos界面一闪而过，说明没有成功。按以下步骤可解决该问题：<br>&nbsp;&nbsp;&nbsp; 确定系统安装有JDK，而且系统环境设置，path里有JDK的bin目录，并有java_home参数，以下是我的几个参数的配置情况可供参考：<br>1&nbsp;&nbsp;java_home&nbsp;&nbsp;&nbsp;D:\JBuilder9\jdk1.4<br>2&nbsp;&nbsp;path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D:\JBuilder9\jdk1.4\bin;D:\Install\ant161\bin<br>3&nbsp;&nbsp;classpath&nbsp;&nbsp;&nbsp;&nbsp;D:\iReport042\fonts;E:\Project\EssV6\webapps\WEB-INF\classes<br>4&nbsp;&nbsp;ant_home&nbsp;&nbsp;&nbsp;D:\Install\ant161<br>（关于上面参数设置的说明：<br>&nbsp;&nbsp;&nbsp; iReport0.4.0要求JDK1.4以上版本，所以要注意Oracle9装好会自动把java环境设为Oracle自带的JDK1.3.1，会导致无法运行iReport。<br>&nbsp;&nbsp;&nbsp; ant_home
及path中ant的设置是为了可以用ant来学习Jasperreport的例子，这些例子在Jasperreport解压后的demo\
samples目录下，比如在Dos环境下进入demo\samples\jasper目录下，输入命令ant&nbsp;view&nbsp;就可以看到该示例报表。<br>&nbsp;&nbsp;&nbsp; classpath
中D:\iReport042\fonts;的设置是确保iReport里字体设置的时候能选择一些外部字体，比如要让PDF显示黑体，那么把
windows下的simhei.ttf拷到D:\iReport042\fonts下，在iReport中如下设置:pdffontname为外部字
体、truetypefont&nbsp;为simhei.ttf、&nbsp;编码为unicode&nbsp;with&nbsp;horizontal&nbsp;writing，这样就能使用黑体了<br>&nbsp;&nbsp;&nbsp; E:\Project\EssV6\webapps\WEB-INF\classes，classpath里的这是设置，是让报表里一些数据要经过特殊处理，可以用工程里的函数。<br><br>&nbsp;&nbsp;&nbsp; 这些设置完成后，到dos环境下的iReport目录下，运行iReport.bat，dos环境下的好处是如果iReport运行失败可以看到失败原因，然后针对性的解决。iReport可以运行后就是一个摸索使用，慢慢了解熟悉的过程了，直到你能做出像样的一些报表。这个过程可以参考上面提到的<br><a href="http:///" target="_blank" class="l2">http://www.javaresearch.org/forum/thread.jsp?column=316&amp;thread=14374</a><br><br><h4>常见问题的解决</h4><br>&nbsp;&nbsp;&nbsp; 具体做报表的时候会碰到许多问题，关键的是我们需要分析出错提示，根据找到解决办法，比如你把报表放到你的工程下，比如运行结果提示
java.io.FileNotFoundException，那么你就需要确定你的报表编译后的文件在相应的目录；又比如提示
NoClassDefFoundError，那你就要看看是哪个包没有放到你的工程下。<br>&nbsp;&nbsp;&nbsp;&nbsp;需要非常强调的是：好好看Jasperreport自带的例子，看懂那些例子，至少模仿一下，就能做出你想要的报表了。<br><br><h4>我的报表Faq</h4>&nbsp;&nbsp;&nbsp; 1.java.io.FileNotFoundException<br>&nbsp;&nbsp;&nbsp;&nbsp;Jasperreport自带的webapp的例子中，用于定位.jasper报表模板文件的方法是：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;reportFile&nbsp;=&nbsp;new&nbsp;File(application.getRealPath("/reports/WebappReport.jasper"));<br>&nbsp;&nbsp;&nbsp;&nbsp;这个时候，如果你的web服务器是tomcat，wabapp中的文件就放在root目录下<br>&nbsp;&nbsp;&nbsp;&nbsp;那么这个报表的实际位置是：D:\Tomcat41\webapps\ROOT\reports\WebappReport.jasper<br>&nbsp;&nbsp;&nbsp;&nbsp;然而当你使用子报表时，情况有所不同，首先在子报表中没有&nbsp;application&nbsp;这个对象<br>&nbsp;&nbsp;&nbsp;&nbsp;所以你不能使用&nbsp;new&nbsp;File(application.getRealPath("/reports/WebappReport.jasper"))的方法来定位子报表。<br>&nbsp;&nbsp;&nbsp;&nbsp;jasperreport支持三种方式定位文件，具体参看&nbsp;JasperreportUtimateGuide.pdf<br>&nbsp;&nbsp;&nbsp;&nbsp;这里说一下，如果你是用String的类型来关联子报表，并且String的值是&nbsp;subreport.jasper<br>&nbsp;&nbsp;&nbsp;&nbsp;那么Jasperreport会到&nbsp;D:\Tomcat41\webapps\ROOT\WEB-INF\classes目录下查找是否有subreport.jasper这个文件<br>&nbsp;&nbsp;&nbsp;&nbsp;知道这点就能采取各种办法了

<br><br><img src ="http://www.blogjava.net/rickhunter/aggbug/28862.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rickhunter/" target="_blank">千山鸟飞绝</a> 2006-01-21 11:14 <a href="http://www.blogjava.net/rickhunter/articles/28862.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>