`
power1128
  • 浏览: 24404 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

Jasper使用小结

阅读更多

 

     最近项目中要使用到单据的打印功能,于是采用了jasper来实现这个feature。由于之前没有开发过类似的功能,做的过程中也走了一些弯路,并且总结了一些经验,正好记录下来。

     一、为什么要使用报表工具进行打印

     首先,需要打印的内容是业务表数据的一部分,因此牵涉到数据查询,采用报表对SQL的支持进行查询是很方便的。

     其次,打印一般对格式要求很高,采用报表设计工具可以很直观的调整格式(当然,HTML编辑器也有类似功能)。尤其对于分页的报表,HTML并没有直接的对分页进行支持,因此可能出现由于页边距的打印设置问题,导致分页错乱。

     二、JASPER使用示例

     a) 报表设计器iReport

     iReportJasper Report自带的一个设计器,最牛逼的是,居然也支持Mac平台。各项拖拽操作都非常顺畅,而且可以显示虚线来对齐(和QQ拼音有兼容问题,容易导致Jasper崩溃)。

 

 

     b) Struts2进行整合

     官方文档:http://struts.apache.org/2.0.11.2/docs/jasperreports-tutorial.html 

     不过官方介绍的是以DataSource的形式传递数据,也就是在Action中进行查询,然后将查询结果传递给报表引擎。但是在后来的实践中,我觉得这样做不是很好。

     首先,你无法直接在iReport中预览列表结果,因为需要传递一个List对象(部署到服务器上再预览结果是很费事的);

     其次,在报表中,我们一般习惯写SQL语句。至少可以进行SQL的优化调整。报表对性能的要求与普通应用不一样,基本是固定的数据库查询,因此我认为使用SQL作为查询语句是非常合适的。

     下面介绍如何在报表中编写查询语句:

     i. 通过Struts传递数据库连接

 

 

     上面两个图中红色部分,就是如何将数据库连接传递给Jasper引擎的方法。有了数据库连接,我们就可以在iReport里直接写SQL了。当然,这是运行时数据库的连接传递方式。在iReport中,可以直接指定数据库连接,这个连接在运行时会被替换为Struts传递过来的Connection

 

 

     点击上图中红色圆圈处,就可以编辑iReport所使用的数据库连接。

     ii. 我们再看一下iReport自带的Query Designer

 

这个Query Designer非常智能,支持你从左侧拖拽表到右侧区域,勾选需要显示的列,以及拖拽关联字段建立表之间的关联关系,自动的生成SQL语句(强烈推荐使用)。

 

 

 

 

其实Jasper还可以支持很多其他的查询语言,包括HQL。我这里就不实验了。因为我觉得,报表还是处理关系数据,因此SQL肯定更合适一些。

     关于Jasper各个Band的功能这里不做介绍。不过这种区分对于报表开发是非常好的,体现了Jasper对报表技术要求的深入理解和良好设计。

     iii. 如何格式化数据:

 

 

 

    上图的红色部分,就是Jasper中的表达式语法。Jasper支持多种表达式语法,包括JavaGroovy等。尤其是支持java类的调用。可以看到上图中就是利用了javaformat功能,拼成一个字符串。

     合理的利用表达式非常重要。因为这种用于显示的值,使用java这种强类型语言编写非常麻烦,有时候还要处理异常。而表达式非常适合这种情况,简单,高效,方便修改。因此千万不要将这种代码写在你的Action里,Action应该只负责数据的加载和保存等,不负责数据的显示。

     iv. iReport的预览功能

 

 

     

 

 

     点击上图的预览按钮,有可能出现下面的参数输入界面:

 

 

     这取决于你的报表是否需要参数。当然,大部分报表都需要传递查询参数。这里你可以输入一个有查询结果的参数值,以方便预览报表查询结果。

     v. 查询结果导出

     Jasper支持非常多的格式显示查询结果。包括常见的HTMLPDFEXCEL等等。因此,Jasper也是一个很好的导出解决方案。

 

 

     你可以指定Jasper以什么格式输出结果,如上图所示(在Struts应用中)。

     下面我简单解释一下,为什么要使用PDF来显示查询结果,而不用常见的HTML

     首先,HTML不支持分页。Jasper之所以可以使HTML报表产生分页的效果,是基于对高度的计算。但是这个计算显然会依赖于页边距的设置。如果页边距不同,那么就可能造成分页错误。而且各个浏览器对于页边距的默认值都是不一样的,因此很难做到通用(我们不可能给每个客户端调整一下页边距);

     但是PDF对于分页的支持是全面的,而且格式是通用的,在任何PDF浏览器中,都不可能产生串页的现象。而且现在PDF应该也是一个广泛接受的标准,客户机几乎不需要任何特别的设置(对于没有安装PDF阅读器的机器,可能需要安装一下)。

     总结到这里,以后有了新的想法,还会更新。下一步将尝试一下图表功能以及其他的报表工具,例如BIRT等。

 

 

 


 

0
1
分享到:
评论
1 楼 javaprober 2013-07-27  
图片的url怎么都不存在,看不到图片....

相关推荐

    jasper-1.900.1.tar.gz

    总结,Jasper-1.900.1是一个强大的JPEG 2000编解码库,提供了高效、灵活的处理方案。对于需要处理JPEG 2000图像的开发者来说,这是一个不可或缺的工具。通过深入理解和掌握Jasper库的使用,我们可以更好地利用JPEG ...

    org.apache.jasper 的jar包下载

    总结来说,Apache Jasper是Java Web开发中的关键组件,它实现了JSP到Servlet的转换,使得动态内容的生成变得更加高效。正确理解和使用Apache Jasper能提升开发效率,确保JSP应用的正常运行。同时,尊重并遵循开源...

    jasper stacked chart demo

    总结而言,创建Jasper Reports中的堆叠条形图需要几个关键步骤:准备和配置数据源、创建Jasper文件、制作图表以及解决可能出现的问题。通过遵循上述指南,您可以轻松地创建出专业的堆叠条形图,并对其进行自定义以...

    jasper怎么构建报表的详细例子

    在本篇文章中,我们将深入探讨如何使用Jasper来构建各种类型的报表,包括普通报表、分组报表、自定义报表、图形报表以及图形表格混合的报表。 首先,我们从基础开始——普通报表。JasperReport的基础在于JRXML文件...

    ireport + jasper的使用

    【标题】:“ireport + jasper的使用” 【描述】:在Java开发中,报表的生成和展示是一项重要任务,ireport和jasper是两个强大的报表工具,它们可以帮助开发者高效地设计、创建和管理复杂的报表。ireport是用于设计...

    jasper-2.0.14.tar.gz

    总结起来,jasper-2.0.14.tar.gz是OpenCV依赖的一个关键组件,用于处理JPEG 2000图像格式。了解如何正确安装和使用jasper对于OpenCV的完整功能至关重要。当官网下载速度慢时,本地获取这个压缩包并手动安装,可以...

    jasper+ireport化复杂为简单系列教程1

    在使用 iReport 和 Jasper Reports 时可能会遇到各种问题,包括但不限于数据源配置错误、报表设计不当等。针对这些问题,需要逐一排查并解决。 通过本教程的学习,你可以了解到如何使用 iReport 设计复杂的报表,并...

    jasper complex crosstab demo

    在本篇文章中,我们将详细介绍如何使用Jasper Reports创建一个包含两个行分组的复杂交叉表(Crosstab),并解决在此过程中可能遇到的一些常见问题。 ### 一、准备工作 1. **准备数据源**:首先,需要准备一个合适...

    Jasper-Matlab 接口

    在Matlab中使用Jasper库,可以方便地进行JPEG 2000图像的读取、写入、分析和修改等操作,这对于科研人员和工程师来说非常有用,因为Matlab提供了强大的矩阵运算和图像处理功能。通过Jasper-Matlab接口,用户可以直接...

    Dynamic+Jasper+Mysql连接生成报表示例

    总结,Dynamic Jasper结合Mysql提供了一种灵活的方式来生成动态报表,可以根据实际的业务需求动态调整报表结构,同时利用Mysql的强大数据库功能来获取数据。在实际应用中,这种组合能够有效地满足复杂的数据展示需求...

    spring MVC Web应用中集成Jasper报表工具

    然后,使用JasperReport的JRDataSource接口或JRBeanCollectionDataSource类将这些数据转化为Jasper报表可识别的格式。例如,如果你使用的是Java集合作为数据源,可以创建一个JRBeanCollectionDataSource实例,传入你...

    jasperreport报表开发小结.docx

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

    jasper-jarbao3-7

    总结来说,"jasper-jarbao3-7"是JasperReports的一个版本,提供了丰富的报表设计和生成功能。在Java项目中,可以利用其API和库来实现复杂的报表需求,同时,结合社区的支持,开发者可以更好地理解和应用这个工具。

    JasperServer-User-Guide[1].pdf

    以上是根据《JasperServer-User-Guide[1].pdf》文件中提供的信息总结出来的关键知识点。这些知识点覆盖了JasperServer的安装、配置、启动和卸载等各个方面,对于用户来说是非常实用且全面的指导文档。

    The First Jasper Report Ever

    标题和描述均提到了"The First Jasper Report Ever",这标志着Jasper Reports的首个报告实例,Jasper Reports是一种广泛使用的开源报告工具,它允许用户创建、填充和查看复杂的报表。此报告由byteodord在2001年至...

    一个好的jasper帮助文档

    本篇文章将根据给定的《Jasper Reports Ultimate Guide》的部分内容进行详细的知识点总结。 #### 二、API概述 Jasper Reports 提供了一套完整的 Java API,涵盖了报表设计、填充、查看和导出等多个方面。这些 API ...

    Jasper Report用户手册(1.0)中文版

    通过以上内容,我们了解了Jasper Reports的基本概念、API使用方法、报表设计与数据处理的关键步骤。这对于开发者来说是非常宝贵的资源,有助于快速掌握Jasper Reports的核心功能,从而高效地完成报表任务。

    jasper 4.1 包

    总结起来,jasper 4.1 包是一个全面的报表解决方案,结合了jasperReports的强大功能和iText的PDF处理能力,特别适合需要处理中文数据的项目。通过这个包,开发者可以轻松地创建、管理和打印包含中文内容的报表,提高...

Global site tag (gtag.js) - Google Analytics