加为好友
发送私信
在线聊天
发表于:2008-01-09 10:25:56 1 楼 得分:9
f、添加参数和使用参数···· 我们重申参数作用,一般是需要外界提供参数给报表的入口,比如SQL语句的where条件的表达式。通过【预览】-【报表参数】开启报表参数列表对话框(工具条上可以找到相应的工具)。如图:输入名称及其他参数。【ok】,保存报表。 那么如何使用呢?打开SQL语句对话框,参考“5.3创建SQL查询语句”,这时候的SQL语句应该是:SELECT * FROM bugs where proname=$P{ProjectName} order by proname,modulename 注意其中的红体字部分,就是把刚才定义的变量运用到SQL语句了。这样当应用提供参数时,只要指定提供给这个参数,那么报表解释引擎即可替换这些变量然后再执行SQL语句,在第二部分提到编程时,会提供参数设定代码。 g、添加变量和使用变量···· 变量的定义类似参数,通过【预览】-【报表变量】开启报表变量列表对话框(工具条上可以找到相应的工具),如图,图中定义的变量的作用是:定义一个Bug的计数器,数据类型是java.lang.Integer,使用Count函数进行统计字段tester,作用范围是模块组,也就是统计模块的Bug量。其中的tester可以改成其他非组对象,比如proname是组对象,就不要用作这里的统计参数。以上提供的是自定义变量,其实iReport系统还有提供一些内嵌(Buildin)的变量,比如页码,行记录数等,视需要而使用。 10、最后的报表···· a、完成后的报表··· b、预览报表··· 点击动态运行报表,出现如图内容: 11、在jsp中调用报表····· 解决这个问题也用了我差不多2天时间:(,但总算是搞定了····· 下面分别介绍以pdf格式和以html格式显示报表···· a、pdf格式ireport_pdf.jsp···· Java code
<% @ page import = " net.sf.jasperreports.engine.* " %>
<% @ page import = " java.util.* " %>
<% @ page import = " java.io.* " %>
<% @ page import = " java.sql.* " %>
<%
// 报表编译之后生成的.jasper 文件的存放位置
File reportFile = new File(application.getRealPath( " ireport/xueji.jasper " ));
// 这个是用来联接我的mysql 的JDBC URL
String url = " jdbc:mysql://localhost:3306/xueji?useUnicode=true&characterEncoding=gb2312 " ;
Class.forName( " org.gjt.mm.mysql.Driver " ).newInstance();
// 传递报表中用到的参数值
Map parameters = new HashMap();
// "Name"是报表中定义过的一个参数名称,其类型为String 型
parameters.put( " banji " , new String( " c1 " ));
System.out.println( " ---------conn------------- " );
// 连接到数据库
Connection conn = DriverManager.getConnection(url, " root " , " root " );
System.out.println( " ---------Jasper begin------------- " );
// 在控制台显示一下报表文件的物理路径
System.out.println(reportFile.getPath());
byte [] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(),parameters,conn);
System.out.println( " ---------Jasper end------------- " );
response.setContentType( " application/pdf " );
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0 , bytes.length);
ouputStream.flush();
ouputStream.close();
%>
b、html格式ireport_html.jsp···· Java code
<%
File reportFile = new File(application.getRealPath( " /ireport/xueji.jasper " ));
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());
Map parameters = new HashMap();
parameters.put( " baiji " , " c1 " );
// parameters.put("BaseDir", reportFile.getParentFile());
// JRBeanArrayDataSource jrDataSource = new JRBeanArrayDataSource(objects); // objects为要打印的实体数组;
Class.forName( " org.gjt.mm.mysql.Driver " );
Connection conn = DriverManager.getConnection( " jdbc:mysql://localhost:3306/xueji " , " root " , " root " );
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn);
JRHtmlExporter exporter = new JRHtmlExporter();
StringBuffer sbuffer = new StringBuffer();
Map imagesMap = new HashMap();
session.setAttribute( " IMAGES_MAP " , imagesMap);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
// exporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, imagesMap);
// exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "/ireport/ireport_html.Image?image=");
// exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, "
" );
exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE);
exporter.exportReport();
// out.flush();
conn.close();
% >
注意 : 以html格式调用主要要注意//exporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, imagesMap); //exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "images目录的路径?image="); 在生成html预览的时候会生成一个px文件,而这个images_uri的路径就是那个px的路径,建议不用,就用下面的语句就可以了· exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE); 而这个语句则是处理分页用的···· //exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, ""); 需要注意的地方···· 必须在tomcat5以上版本中运行···· 在运行的时候还要将jasperreports/lib下的包全部拷到tomcat下你所放文件目录下的win-inf/lib下··· 特别要注意的是看看ireport/lib下的包与jasperreports/lib的包是否兼容··· 之前我的一直有问题就是因为我的发布环境是jasperreports-0.6.7.jar而运行环境是jasperreports-0.6.8.jar··· 这样也会出现错误的····
修改
删除
举报
引用
回复