`
sxdsly
  • 浏览: 11739 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

ireport和jasperReport小结

阅读更多

一个报表的结构大概是如下几个部分: title, pageHeader,columnHeader,detail,columnFooter,pageFooter,lastPageFooter,summary.

Title: 每个报表一般会有一个名字.
pageHeader: 报表的公共要素, 比如页码,创建时间,创建人等信息一般放置在这里.
columnHeader: 放列的名称.
detail: 放置需要循环输出的数据.
columnFooter: 列级别的统计计算值或是列的说明.
pageFooter: 放置页级别的统计值或是页的说明.
lastPageFooter: 最后一页特殊的格式, 可以放置总结.
summary: 只在最后一页才出现.

字段(Fields): 是数据源中抽取出来的,希望在报表中出现的数据库内容.$F{fieldName};
参数(Parameters): 你的应用需要提供给报表的入口, 比如你希望在报表给解释的时间提供where语句的条件值,那么就可以使用参数.$p{parameterName}
变量(Var): 这是报表中一些逻辑运算的表现,比如统计值,$V{variablesName}.

jasperReport的定义是一个xml文件,里面常见的节点如下:
parameter: 报表的查询参数,
queryString: 代表从数据库中取数据的Query.一个queryString中一般会有若干个parameter.
field: 代表报表数据的字段.
variable: 变量.
<jasperReport>
<parameter name="type" class="java.lang.String"/>
<queryString><![CDATA[select * from books where bookType=$P{type}]]></queryString>
<variable name="date" class="java.util.Date" resetType="Report">
<variableExpression><![CDATA[new Date()]]></variableExpression>
</variable>
<field name="bookid" class="java.lang.String"/>
<field name="bookname" class="java.lang.String"/>
<field name="booktype" class="java.lang.String"/>
<title>
<textFieldExpression class="java.lang.String">
<![CDATA[$P{type}+"类书籍汇总"]]>
</textFieldExpression>
</title>
<pageHeader>
<textFieldExpression class="java.lang.String">
<![CDATA["第"+$V{PAGE_NUMBER}.intValue()+"页"]]>
</textFieldExpression>
</pageHeader>
<columnHeader>
<text><![CDATA[编号]]></text>
<text><![CDATA[名称]]></text>
</columnHeader>
<detail>
<textFieldExpression class="java.lang.Integer">
<![CDATA[$F{bookid}]]>
</textFieldExpression>
<textFieldExpression class="java.lang.String">
<![CDATA[$F{bookname}]]>
</textFieldExpression>
<textFieldExpression class="java.lang.String">
<![CDATA[$F{booktype}]]>
</textFieldExpression>
</detail>
<columnFooter>
<band height="40" isSplitAllowed="true">
</band>
</columnFooter>
<pageFooter>
<text><![CDATA[本页合计:]]>
</text>
<textFieldExpression class="java.lang.Integer">
<![CDATA[$V{PAGE_COUNT}]]>
</textFieldExpression>
</pageFooter>
</jasperReport>

将设计好的报表嵌入到java程序中:
(1)将jasperReport及其所需的第三方api拷贝到web应用的lib中.JasperReport的项目目录下的doc/requirements.html 列出了所需的库.
(2)在jsp页面中获得参数
<% String booktype = (String)request.getParameter("booktype");%>
获得数据源:
<%
//得到数据源
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;User=sa;Password=;DatabaseName=library");
//确定报表文件(*.jasper)的路径获得这个的真实地址
File reportFile = new File(application.getRealPath("/reports/example.jasper"));
//下面这行代码告诉我们一个Jasper Report在JAVA程序中是一个对象
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());
//下面这两行代码告诉我们要用“名值对”的方式来传递报表参数
Map parameters = new HashMap();
parameters.put("type", booktype);
//下面这行代码告诉我们下一步是要填充(fill)报表
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn);

//运行报表的最一步则是要导出(export)报表到一个输出流
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, "image.jsp?image=");
//导出报表
exporter.exportReport();
%>
经过上面的操作后,就将这个报表在页面中显示出来.

生成xls样式的:
基本的一些操作都相同:
JRXlsExporter exporter=new JRXlsExporter(); //生成的是excel的数据信息.
response.setContentType("application/vnd.ms-excel");
ServletOutputStream output = response.getOutputStream();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,output);
exporter.exportReport();

分享到:
评论

相关推荐

    jasperreport报表开发小结.docx

    jasperReport+ireport 报表开发小结总结了 JasperReports 的基本概念、特点、类库依赖、开发流程和 ireport 使用说明等内容,为读者提供了一个全面的了解 JasperReports 和 ireport 的报表开发指南。

    Jasperreport应用小结

    **JasperReport应用小结** JasperReport是一款强大的开源报表工具,主要应用于Java环境中,用于生成各种复杂的报表,包括PDF、HTML、Excel等多种格式。它以其丰富的设计功能、灵活的数据处理以及良好的社区支持,...

    JasperReport+iReport报表工具详细开发手册

    - **小结区**:用于汇总数据,显示总和或其他统计信息。 - **页眉/页脚**:每个页面的顶部和底部区域,通常用于显示页码、时间戳等。 ##### 4.2. 变量、参数及字段 - **变量**:在报表设计过程中,可以定义变量来...

    JasperReport初级教程(2.0.3)图文详解

    #### 五、小结 本教程详细介绍了如何使用JasperReport 2.0.3版本创建报表模板的基本流程,包括下载安装iReport、设置语言环境、以及其他的一些基本配置。通过这些步骤,初学者可以快速上手JasperReport,并进一步...

    JasperReport中使用多个数据源的方法

    - **小结**:通过上述步骤,可以在一个报表中同时使用多个数据源,无需依赖子报表技术。 - **注意事项**: - **参数类型**:确保参数类型与实际数据类型相匹配,特别是对于使用`JRDataSource`作为参数类型的情况。 ...

    ireport报表制作步骤详解.pdf

    #### 五、小结 通过以上步骤,我们可以熟练地使用iReport设计报表模板,并结合Java代码来生成动态报表。iReport不仅简化了报表的设计过程,还极大地提高了开发效率。希望本文对正在学习或使用iReport的读者有所帮助...

    报表系统研究经验分享

    #### 小结 通过以上步骤,我们可以实现IReport与JasperReport的深度集成,利用IReport进行报表设计,再借助JasperReport的强大功能生成和展示报表。此过程不仅提高了报表设计的效率,也保证了报表生成的质量和灵活...

Global site tag (gtag.js) - Google Analytics