• 0
  • 0
分享
  • JasperReport报表生成工具的基本使用和常见问题——软件测试圈
  • 曼倩诙谐 2022-06-17 11:45:25 字数 1715 阅读 891 收藏 0

  JasperReports介绍

  JasperReport是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF、HTML或者XML格式,该库完全由Java写出,可以用于在各种Java应用程序,非常适合Java开发者用来做报表生成。

  基本使用指南

  新建项目

1.png

  首先选择模板,这里就直接选了普通的A4模板。

2.png

  这里用来设置文件名字和文件路径。

3.png

  这里是选择数据源,我这里已经事先创建好了数据库连接,在后续测试取数据的时候会用到。

4.png

  这里就是JasperReport的主界面,首先介绍一下界面的五个主要区域:

  区域1:选择数据源和项目;

  区域2:用于展示报表的内容列表,报表内所含有的所有组件信息都会展示在这里;

  区域3:就是可视化报表内容区域,包含报表样式,报表源码和预览生成;

  区域4:组件列表;

  区域5:属性编辑区域。

  再介绍一下需要用的几个基本属性名称:

  Parameters:报表的参数,通常由外部传入数据填充;

  Fileds:字段,由关联的数据库或实体类生成;

  Vareables:变量,可以用来进行一些数学计算。

  最后介绍一下报表内容的几个模块:

  Title(标题):只在整个报表的第一页最上端显示,其他页面均不显示;

  Page Header(页头):在整个报表每一页都会显示,第一页在Title区域下面,之后的每一页均在页面的最上端显示;

  Column Header(列头):Detail中打印的是一张表的话,Column Header就是表中每一列的列头;

  Deatil(详情):报表内容,可以循环显示数据;

  Column Footer(列脚):Detail中打印的是一张表的话,Column Footer就是表中每一列的列脚;

  Page Footer(页脚):整个报表每一页都会在最下端显示,一般用来显示页码;

  Summary(合计):出现在整个报表的最后一页中,在Detail后面,主要用来做报表的合计显示。

  开始画报表

5.png

  这是该项目的源代码,我在这里需要取一些产品表里的数据,queryString标签内就是主项目的取数sql,直接加进去。

6.png

  这里加入sql后取到了产品ID字段,后续会在报表内显示,所以在FIelds域里也新增了ID_PRODUCT的属性,可以直接在代码里添加,也可以在主界面添加,如下图,直接右键Create Field,然后在区域5里可以修改类和名称。

7.png

8.png

  接下来我们将Static Text和“Text Field”拖入Detail区域中,一个是静态文本,一个用来放属性。

9.png

  双击Text Field,可以选择我们刚才新添加的属性ID_PRODUCT,并将静态文本改为产品ID,即可初步生成我们的报表。

10.png

  可以看到已经生成成功了,我这里只去了前十条数据,这里再展示一下通过外部输入数据来筛选数据,使用投资性质VLU_INVEST_PROPERTY这个字段,先添加该字段的外部输入参数,再在sql里加入对应筛选的语句。

11.png

  之后将该字段加入主界面,生成报表即可根据外部输入该字段来筛选数据。

12.png

13.png

  这里模板文件生成的基本的操作流程就已经介绍完了,这时候是.jxml文件,然后需要build成.jasper文件,就可以在java程序里调用jasper相关方法生成报表了。

  常见问题

  如图错误

14.png

  这个错误一般是由于页面的宽度和列长度不匹配导致的。

15.png

  在xml源码开头将columnWidth改为比pageWidth小一截即可。

  主界面有些表格无法显示

  很有可能是表格重叠导致,分开后即可。


  无查询结果

  在使用table组件后,外部数据输入后sql查询没有结果。

  因为外部输入的数据没有传递到子查询中,需要设置值的传递。

16.png

17.png

  像图中所示即可将主项目的值传递到table中。

  内存泄漏或者溢出

  可以使用仿真器来解决问题,推荐使用JRGzipVirtualizer仿真器,能够将内存泄漏压缩在最小的范围里了。



作者:田佳霖   

来源:http://www.51testing.com/html/78/n-7789478.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   富士通和 Cohere宣布建立新的战略合作伙伴关系,以提供日语企业人工智能服务。Cohere 表示,他们将为企业开发几种高度安全的模式,并满足企业的需求,"为客户带来实际影响"。  Cohere 的 Command R+ 模型将成为计划中模型的基础,因为它具有可验证的准确性、多语言支持和自动化工具等功能。私有云部署将作为交易的一部分,帮助金融机构、公共部门和研发单位等受多种法规约束的组织获得服务。  除 Command R+ 模型外,富士通还将使用Cohere 的 Embed 和 Rerank 模型创建企业搜索应用程序和检索增强生成 (RAG) 系统。  在谈到协议时,...
            0 0 242
            分享
          •   简介  使用charles,映射线上项目请求到本地文件,轻松调试线上问题,大幅度加快线上问题的排查与修复。  Charles设置  1. 检查证书是否安装?  如图所示,表示已安装。并且证书有效未过期。  如果证书已过期,择先删除。然后在charlos上重置一个新证书。  重置路径: Help->SSL Proxying-> Reset Chrales Root Certificate  2. 如果没有,择安装证书  2.1、mac上下载并安装证书 Help->SSL Proxying-> Install Chrales RootCertificate  2.2 信...
            0 0 696
            分享
          •   我经常与一些客户打交道,他们的测试自动化要么刚刚开始,要么正在努力成长,而且他们常常都犯同样的致命错误。  虽然他们可能了解测试自动化的基础知识,但是他们仍然认为脚本化测试的价值在于通过自动执行脚本而不是手工执行来节省时间。他们的理由是,如果自动化脚本执行速度比人类执行速度快,那么最大的效率收益应该来自于自动化运行时间最长的测试。  如果执行时间是衡量价值的唯一时间,那么他们是对的。  但是测试执行时间只是一个与时间相关的问题,还需要考虑编写自动化测试所需的时间,以及学习如何编写测试所需的时间。当团队将大型测试简化为更小、更短的测试时,他们更容易取得成功,你可以从这个非常识性的想法中获益。...
            0 0 750
            分享
          •   情景说明  小Q是一名工作多年的测试开发工程师,优势是技术能力强,善于通过技术解决工作中的问题,待改进项是思想站位需要提升,做事推动力需要加强。  辅导过程  小Z:工作中对你的建设性反馈中有一项是需要提升思想站位,今天来聊聊。  小Q:好,但我想问下,到底什么叫提高思想站位,具体表现是什么?高和低的区别是怎样的?  小Z:好问题。官方的解释你可以查查资料,我用工作中一个例子阐述一下。  以自动化测试这个事项为例,作为主R(专项负责人),大体上可以有三个维度,一是看问题的视角,二是时效性,三是对资源的撬动。  1.看问题的视角:你思考问题的视角要能够站在更大的范围,同样是自动化测试专项,你...
            0 0 323
            分享
          • 在压力测试中,经常需要生成随机值来模拟用户行为。JMeter 提供了多种方式来生成随机值,本文来具体介绍一下。随机数函数JMeter 提供了多个用于生成随机数的函数,其中最常用的是__Random函数。该函数可以生成一个指定范围内的随机整数或浮点数。语法如下:${__Random(min,max)}其中,min 和 max 是生成随机数的范围,可以是整数或浮点数。例如,${__Random(1,100)} 会生成一个 1 到 100 之间的随机整数。以下是随机手机号最后 3 位数字的例子:查看传过去的数据:也可以用 BeanShell 来实现。添加前置处理器: BeanShell PrePro...
            0 0 3016
            分享
      • 51testing软件测试圈微信