﻿<?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-莫非-随笔分类-报表</title><link>http://www.blogjava.net/three-3/category/34552.html</link><description>游离中！！！</description><language>zh-cn</language><lastBuildDate>Thu, 24 Jun 2010 08:35:27 GMT</lastBuildDate><pubDate>Thu, 24 Jun 2010 08:35:27 GMT</pubDate><ttl>60</ttl><item><title>解决Jasperreport的web打印另一种方法</title><link>http://www.blogjava.net/three-3/archive/2010/06/24/324329.html</link><dc:creator>杨慕</dc:creator><author>杨慕</author><pubDate>Thu, 24 Jun 2010 05:08:00 GMT</pubDate><guid>http://www.blogjava.net/three-3/archive/2010/06/24/324329.html</guid><wfw:comment>http://www.blogjava.net/three-3/comments/324329.html</wfw:comment><comments>http://www.blogjava.net/three-3/archive/2010/06/24/324329.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/three-3/comments/commentRss/324329.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/three-3/services/trackbacks/324329.html</trackback:ping><description><![CDATA[昨天下了jasperreport的最新版本3.7.3看了下。弄了半天还是没能习惯他的报表制作方式。看了下他的<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B4%F2%D3%A1">打印</span>是利用applet的来打印的。而且还需要客户端安装 十几MB的 jre 关于这个好坏，每个人都有自己的看法。今天我这里要说的是利用<a href="http://www.jatools.com/print/" target="_blank"><font color="#810081">jatoolsprinter</font></a>控件来打印jasperreport的报表。控件大小只有100k左右&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;关于jasperreport的报表制作这里不做说明，我是在环境中跑了下jasperreport的demo运行界面如下<br />
<span id="attach_240" onmouseover="showMenu(this.id, 0, 1)" style="display: none; left: 215px; position: absolute; top: 360px"><img src="http://bbs.jatools.com/images/default/attachimg.gif" border="0"  alt="" /></span> <img onmouseover="attachimginfo(this, 'attach_240', 1);attachimg(this, 'mouseover')" onmouseout="attachimginfo(this, 'attach_240', 0, event)" alt="" src="http://bbs.jatools.com/attachments/month_1006/20100624_25438a55b6727a6fd5a3SeFHx2hVc2fz.png" onload="attachimg(this, 'load')" border="0" />
<div class="t_attach" id="attach_240_menu" style="display: none; position: absolute"><img class="absmiddle" alt="" src="http://bbs.jatools.com/images/attachicons/image.gif" border="0" /> <a href="http://bbs.jatools.com/attachment.php?aid=240&amp;k=15b3adbce271df5c8352847cf287e5d5&amp;t=1277357864&amp;nothumb=yes" target="_blank"><strong>2010-06-24_111901.png</strong></a> (24.77 KB)<br />
<div class="t_smallfont">2010-6-24 12:57</div>
</div>
<br />
<br />
运行JSP Example 如下图<br />
<span id="attach_241" onmouseover="showMenu(this.id, 0, 1)" style="display: none; left: 215px; position: absolute; top: 1198px"><img src="http://bbs.jatools.com/images/default/attachimg.gif" border="0"  alt="" /></span> <img onmouseover="attachimginfo(this, 'attach_241', 1);attachimg(this, 'mouseover')" onmouseout="attachimginfo(this, 'attach_241', 0, event)" alt="" src="http://bbs.jatools.com/attachments/month_1006/20100624_8018119283af4c88962cHvaR4Xiypdit.png" onload="attachimg(this, 'load')" border="0" />
<div class="t_attach" id="attach_241_menu" style="display: none; position: absolute"><img class="absmiddle" alt="" src="http://bbs.jatools.com/images/attachicons/image.gif" border="0" /> <a href="http://bbs.jatools.com/attachment.php?aid=241&amp;k=f5c53b7479f84e3ab33ba786832f261e&amp;t=1277357864&amp;nothumb=yes" target="_blank"><strong>2010-06-24_112926.png</strong></a> (15.38 KB)<br />
<div class="t_smallfont">2010-6-24 12:57</div>
</div>
<br />
下面我们对demo中的html.jsp进行修改 用<a href="http://www.jatools.com/print/" target="_blank"><font color="#810081">jatoolsprinter</font></a>来打印Jasperreport 的报表<br />
蓝色部分为控件需要的内容<br />
<font color="#0000ff">&lt;%@ page contentType="text/html; charset=gb2312" language="java" %&gt;</font><br />
&lt;%@ page errorPage="error.jsp" %&gt;<br />
&lt;%@ page import="datasource.*" %&gt;<br />
&lt;%@ page import="net.sf.jasperreports.engine.*" %&gt;<br />
&lt;%@ page import="net.sf.jasperreports.engine.util.*" %&gt;<br />
&lt;%@ page import="net.sf.jasperreports.engine.export.*" %&gt;<br />
&lt;%@ page import="net.sf.jasperreports.j2ee.servlets.*" %&gt;<br />
&lt;%@ page import="java.util.*" %&gt;<br />
&lt;%@ page import="java.io.*" %&gt;<br />
<font color="#0000ff">&lt;html&gt;<br />
&lt;head&gt;</font><br />
<font color="#0000ff"><font color="#000000">&lt;!-- <strong>插入打印控件</strong> --&gt;</font><br />
&lt;OBJECT ID="jatoolsPrinter" CLASSID="CLSID:B43D3361-D975-4BE2-87FE-057188254255" <br />
codebase="jatoolsPrinter.cab#version=5,3,0,0"&gt;&lt;/OBJECT&gt;<br />
&lt;/head&gt;<br />
&lt;script type="text/javascript"&gt;<br />
function doPrint(how)<br />
{<br />
&nbsp; &nbsp; <br />
//打印文档对象<br />
&nbsp; &nbsp; var myDoc ={ <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;documents: document,&nbsp; &nbsp; // 打印页面(div)们在本文档中<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;copyrights :&nbsp; &nbsp; '杰创软件拥有版权 </font>[url=]<font color="#0000ff">www.jatools.com'</font>[/url]&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// <strong>版权声明,必须 <br />
</strong><br />
<font color="#0000ff">&nbsp; &nbsp;&nbsp; &nbsp; };<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br />
&nbsp; &nbsp; // 调用打印方法<br />
&nbsp; &nbsp; if(how == '打印<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%D4%A4%C0%C0">预览</span>...')<br />
&nbsp; &nbsp; jatoolsPrinter.printPreview(myDoc,true );&nbsp; &nbsp;// 打印预览<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br />
&nbsp; &nbsp;else if(how == '打印...')<br />
&nbsp; &nbsp;&nbsp; &nbsp;jatoolsPrinter.print(myDoc ,true);&nbsp; &nbsp;// 打印前弹出打印设置对话框<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; <br />
&nbsp; &nbsp;else<br />
&nbsp; &nbsp;&nbsp; &nbsp;jatoolsPrinter.print(myDoc ,false);&nbsp; &nbsp;&nbsp; &nbsp; // 不弹出对话框打印<br />
}<br />
&lt;/script&gt;<br />
&lt;body&gt;</font><br />
<font color="#0000ff">&lt;br&gt;<br />
&lt;input type="button" value="打印预览..."&gt;<br />
&lt;input type="button" value="打印..."&gt;<br />
&lt;input type="button" value="打印"&gt;<br />
&lt;br&gt;</font><br />
<br />
&lt;%<br />
File reportFile = new File(application.getRealPath("/reports/WebappReport.jasper"));<br />
&nbsp; &nbsp; if (!reportFile.exists())<br />
&nbsp; &nbsp;throw new JRRuntimeException("File WebappReport.jasper not found. The report design must be compiled first.");<br />
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());<br />
Map parameters = new HashMap();<br />
parameters.put("ReportTitle", "Address Report");<br />
parameters.put("BaseDir", reportFile.getParentFile());<br />
&nbsp; &nbsp; <br />
JasperPrint jasperPrint = <br />
&nbsp; &nbsp;JasperFillManager.fillReport(<br />
&nbsp; &nbsp; jasperReport, <br />
&nbsp; &nbsp; parameters, <br />
&nbsp; &nbsp; new WebappDataSource()<br />
&nbsp; &nbsp; );<br />
&nbsp; &nbsp; <br />
JRHtmlExporter exporter = new JRHtmlExporter();<br />
session.setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);<br />
<br />
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);<br />
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);<br />
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "../servlets/image?image=");<br />
<br />
exporter.exportReport();<br />
%&gt;<br />
<font color="#0000ff">&lt;/body&gt;<br />
&lt;/html&gt;</font><br />
<br />
因为<a href="http://www.jatools.com/print/" target="_blank"><font color="#810081">jatoolsprinter</font></a>的打印是根据&lt;div id='page'+数字&gt;来区分打印的页的。而Jasperreport生成的html页面中又没有包含这些信息，所以我们就需要修改下Jasperreport的源码<br />
由生成的报表页面的源码中我们可以看到Jasperreport是利用&lt;a name="JR_PAGE_ANCHOR_?_?"&gt;&lt;/a&gt;来区分页数的我们可以找到<font color="#ff0000">package net.sf.jasperreports.engine.export </font><font color="#000000">下的<font color="#ff0000">JRHtmlExporter.java</font> 找到代码中的<font color="#ff0000">exportReportToWriter</font>方法里的如下片段</font><br />
<font color="#ff0000">writer.write("&lt;a name=\"" + JR_PAGE_ANCHOR_PREFIX + reportIndex + "_" + (pageIndex + 1) + "\"&gt;&lt;/a&gt;\n");</font><br />
<font color="#000000">在这段代码之后加上</font><br />
<font color="#0000ff">writer.write("&lt;div id='page"+ (pageIndex + 1)+"'&gt;\n");</font><br />
<font color="#000000">然后找到源码中的</font><br />
<font color="#ff0000">exportPage(page);</font><br />
<font color="#000000">在他之后加上div的结束标志</font><br />
<font color="#0000ff">writer.write("&lt;/div&gt;\n");</font><br />
<font color="#000000">以上代码蓝色部分为后添加的内容</font><br />
<font color="#000000"><span id="attach_242" onmouseover="showMenu(this.id, 0, 1)" style="display: none; position: absolute"><img src="http://bbs.jatools.com/images/default/attachimg.gif" border="0"  alt="" /></span> <img onmouseover="attachimginfo(this, 'attach_242', 1);attachimg(this, 'mouseover')" onmouseout="attachimginfo(this, 'attach_242', 0, event)" alt="" src="http://bbs.jatools.com/attachments/month_1006/20100624_bf81e83671c250f55f13qHAVokhpCG7F.png" onload="attachimg(this, 'load')" border="0" />
<div class="t_attach" id="attach_242_menu" style="display: none; position: absolute"><img class="absmiddle" alt="" src="http://bbs.jatools.com/images/attachicons/image.gif" border="0" /> <a href="http://bbs.jatools.com/attachment.php?aid=242&amp;k=a9e89e31ace7bd289907479e5d3fe44c&amp;t=1277357864&amp;nothumb=yes" target="_blank"><strong>2010-06-24_115143.png</strong></a> (15.94 KB)<br />
<div class="t_smallfont">2010-6-24 12:57</div>
</div>
<br />
</font><br />
<font color="#000000">修改之后的代码如下</font><br />
<font color="#000000">writer.write("&lt;a name=\"" + JR_PAGE_ANCHOR_PREFIX + reportIndex + "_" + (pageIndex + 1) + "\"&gt;&lt;/a&gt;\n");<br />
&nbsp; &nbsp;&nbsp;&nbsp;<br />
&nbsp; &nbsp;&nbsp;&nbsp;<font color="#0000ff">writer.write("&lt;div id='page"+ (pageIndex + 1)+"'&gt;\n");<br />
</font>&nbsp; &nbsp;&nbsp;&nbsp;</font><br />
<font color="#000000">&nbsp; &nbsp;&nbsp; &nbsp;/*&nbsp; &nbsp;*/<br />
&nbsp; &nbsp;&nbsp; &nbsp;exportPage(page);<br />
&nbsp; &nbsp;&nbsp;&nbsp;<br />
&nbsp; &nbsp;&nbsp;&nbsp;</font><font color="#0000ff">writer.write("&lt;/div&gt;\n");</font><br />
<font color="#000000">修改完这些之后我们就把<font color="#0000ff">jatoolsPrinter.cab</font>放在项目中html.jsp </font><br />
<font color="#000000"><font color="#0000ff">&lt;OBJECT ID="jatoolsPrinter" CLASSID="CLSID:B43D3361-D975-4BE2-87FE-057188254255" <br />
codebase="jatoolsPrinter.cab#version=5,3,0,0"&gt;&lt;/OBJECT&gt;</font><br />
</font><br />
<font color="#000000">codebase指定的位置这里指定的是和html.jsp同一<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C2%B7%BE%B6">路径</span></font><br />
<font color="#000000"></font><span id="attach_243" onmouseover="showMenu(this.id, 0, 1)" style="display: none; position: absolute"><img src="http://bbs.jatools.com/images/default/attachimg.gif" border="0"  alt="" /></span> <img onmouseover="attachimginfo(this, 'attach_243', 1);attachimg(this, 'mouseover')" onmouseout="attachimginfo(this, 'attach_243', 0, event)" alt="" src="http://bbs.jatools.com/attachments/month_1006/20100624_562b0d5d1e008cd8ce9af98Z9OnrZN1n.png" onload="attachimg(this, 'load')" border="0" />
<div class="t_attach" id="attach_243_menu" style="display: none; position: absolute"><img class="absmiddle" alt="" src="http://bbs.jatools.com/images/attachicons/image.gif" border="0" /> <a href="http://bbs.jatools.com/attachment.php?aid=243&amp;k=6ca6200b1f2d219c41fb206b96efcc8f&amp;t=1277357864&amp;nothumb=yes" target="_blank"><strong>2010-06-24_115501.png</strong></a> (5.74 KB)<br />
<div class="t_smallfont">2010-6-24 12:57</div>
</div>
<br />
<font color="#000000">现在打开IE 运行 demo</font><br />
<font color="#000000">第一次运行会提示安装jatoolsprinter控件 选择安装ActiveX控件</font><br />
<br />
<span id="attach_244" onmouseover="showMenu(this.id, 0, 1)" style="display: none; position: absolute"><img src="http://bbs.jatools.com/images/default/attachimg.gif" border="0"  alt="" /></span> <img onmouseover="attachimginfo(this, 'attach_244', 1);attachimg(this, 'mouseover')" onmouseout="attachimginfo(this, 'attach_244', 0, event)" alt="" src="http://bbs.jatools.com/attachments/month_1006/20100624_5b11948a5e76e5ec03faO08C40o0Aci9.png" onload="attachimg(this, 'load')" border="0" />
<div class="t_attach" id="attach_244_menu" style="display: none; position: absolute"><img class="absmiddle" alt="" src="http://bbs.jatools.com/images/attachicons/image.gif" border="0" /> <a href="http://bbs.jatools.com/attachment.php?aid=244&amp;k=581100932e716355165f902af590a123&amp;t=1277357864&amp;nothumb=yes" target="_blank"><strong>2010-06-24_115740.png</strong></a> (16.11 KB)<br />
<div class="t_smallfont">2010-6-24 12:57</div>
</div>
<br />
<font color="#000000">点击安装</font><br />
<br />
<span id="attach_245" onmouseover="showMenu(this.id, 0, 1)" style="display: none; position: absolute"><img src="http://bbs.jatools.com/images/default/attachimg.gif" border="0"  alt="" /></span> <img onmouseover="attachimginfo(this, 'attach_245', 1);attachimg(this, 'mouseover')" onmouseout="attachimginfo(this, 'attach_245', 0, event)" alt="" src="http://bbs.jatools.com/attachments/month_1006/20100624_f0ab06385185f4c4f21c5U1LmKrfKSCL.png" onload="attachimg(this, 'load')" border="0" />
<div class="t_attach" id="attach_245_menu" style="display: none; position: absolute"><img class="absmiddle" alt="" src="http://bbs.jatools.com/images/attachicons/image.gif" border="0" /> <a href="http://bbs.jatools.com/attachment.php?aid=245&amp;k=7350bdf2d31c6afdecd9536b649d4f77&amp;t=1277357864&amp;nothumb=yes" target="_blank"><strong>2010-06-24_115843.png</strong></a> (14.6 KB)<br />
<div class="t_smallfont">2010-6-24 12:57</div>
</div>
<br />
<font color="#000000">点击打印预览<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%D0%A7%B9%FB">效果</span>如下</font><br />
<font color="#000000"><span id="attach_246" onmouseover="showMenu(this.id, 0, 1)" style="left: 215px; position: absolute; top: 5745px"><img src="http://bbs.jatools.com/images/default/attachimg.gif" border="0"  alt="" /></span> <img onmouseover="attachimginfo(this, 'attach_246', 1);attachimg(this, 'mouseover')" onmouseout="attachimginfo(this, 'attach_246', 0, event)" alt="" src="http://bbs.jatools.com/attachments/month_1006/20100624_16c3a623bb64e6dbeebfQVaOqJLX8CBb.png" onload="attachimg(this, 'load')" border="0" />
<div class="t_attach" id="attach_246_menu" style="display: none; position: absolute"><img class="absmiddle" alt="" src="http://bbs.jatools.com/images/attachicons/image.gif" border="0" /> <a href="http://bbs.jatools.com/attachment.php?aid=246&amp;k=ffc08d6377846a05a6082c92fae0eb27&amp;t=1277357864&amp;nothumb=yes" target="_blank"><strong>2010-06-24_115948.png</strong></a> (12.77 KB)<br />
<div class="t_smallfont">2010-6-24 12:57</div>
</div>
<br />
<br />
<br />
到此就可以在web页面中直接打印Jasperreport 报表了。<br />
</font>
<img src ="http://www.blogjava.net/three-3/aggbug/324329.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/three-3/" target="_blank">杨慕</a> 2010-06-24 13:08 <a href="http://www.blogjava.net/three-3/archive/2010/06/24/324329.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>简表(JOR)，开源报表工具</title><link>http://www.blogjava.net/three-3/archive/2009/10/23/299451.html</link><dc:creator>杨慕</dc:creator><author>杨慕</author><pubDate>Fri, 23 Oct 2009 02:32:00 GMT</pubDate><guid>http://www.blogjava.net/three-3/archive/2009/10/23/299451.html</guid><wfw:comment>http://www.blogjava.net/three-3/comments/299451.html</wfw:comment><comments>http://www.blogjava.net/three-3/archive/2009/10/23/299451.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/three-3/comments/commentRss/299451.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/three-3/services/trackbacks/299451.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在eclipse中导入jor工程简表(JOR),是一款国产的开源java报表工具,核心代码来自于杰表2008.详情请访问官网 www.jatools.com/jor&nbsp;&nbsp; 简表的部署现提供两种方式.第一种通过 SVN 直接检出到ECLIPSE中SVN 地址 http://jatoolsopenreport.googlecode.com/svn/...&nbsp;&nbsp;<a href='http://www.blogjava.net/three-3/archive/2009/10/23/299451.html'>阅读全文</a><img src ="http://www.blogjava.net/three-3/aggbug/299451.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/three-3/" target="_blank">杨慕</a> 2009-10-23 10:32 <a href="http://www.blogjava.net/three-3/archive/2009/10/23/299451.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>