当前位置:网站首页>JasperReport报表生成工具的基本使用和常见问题
JasperReport报表生成工具的基本使用和常见问题
2022-06-22 12:50:00 【软件测试小仙女】
JasperReports介绍
JasperReport是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF、HTML或者XML格式,该库完全由Java写出,可以用于在各种Java应用程序,非常适合Java开发者用来做报表生成。

基本使用指南
新建项目

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

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

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

这里就是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后面,主要用来做报表的合计显示。
开始画报表

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

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


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

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

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

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


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

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

在xml源码开头将columnWidth改为比pageWidth小一截即可。
主界面有些表格无法显示
很有可能是表格重叠导致,分开后即可。
无查询结果
在使用table组件后,外部数据输入后sql查询没有结果。
因为外部输入的数据没有传递到子查询中,需要设置值的传递。


像图中所示即可将主项目的值传递到table中。
内存泄漏或者溢出
可以使用仿真器来解决问题,推荐使用JRGzipVirtualizer仿真器,能够将内存泄漏压缩在最小的范围里了。
最后:
可以到我的个人号:atstudy-js,可以免费领取一份10G软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!其中包括了有基础知识、Linux必备、Mysql数据库、抓包工具、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试等。
这些测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
边栏推荐
- Tianrun cloud is about to be listed: VC tycoon Tian Suning significantly reduces his holdings and is expected to cash out HK $260million
- LDA study notes
- SQL Server 常用函数
- Leetcode union search set
- What is bout?
- 性能相关指标
- Run sqoop1.4.5 to report warning: does not exist! HCatalog jobs will fail.
- CVE-2022-22965複現
- Leetcode knapsack problem
- MySQL如何让一个表中可以有多个自增列
猜你喜欢

3DMAX modeling notes (I): introducing 3DMAX and creating the first model Hello World

技术实践 | 场景导向的音视频通话体验优化

Tianrun cloud is about to be listed: VC tycoon Tian Suning significantly reduces his holdings and is expected to cash out HK $260million

Kubernetes monitoring: grafana adds datasource and dashboard through automation

Problème de sous - séquence / substrat leetcode

测试组的任务职责和测试的基本概念

"N'osez pas douter du Code, vous devez douter du Code" notez une analyse de délai de demande réseau

JSP based library management system, including source code, database script, video tutorial for project operation, and video tutorial for thesis writing

别再用 System.currentTimeMillis() 统计耗时了,太 Low,StopWatch 好用到爆!

Talk about row storage and column storage of database
随机推荐
高薪程序员&面试题精讲系列114之Redis缓存你熟悉吗?Redis的key如何设计?内存淘汰机制你熟悉吗?
数据库 就业咨询系统求各位帮下忙
MySQL如何让一个表中可以有多个自增列
Docker installing PostgreSQL
Customer member value analysis
Stop using system Currenttimemillis() takes too long to count. It's too low. Stopwatch is easy to use!
论文专利博客写作总结
Talk about row storage and column storage of database
“不敢去懷疑代碼,又不得不懷疑代碼”記一次網絡請求超時分析
Common writing methods and excellent examples of acknowledgments in graduation thesis writing
Processing statement on price selection of several manufacturers
Redis password modification, startup, view and other operations
epoch_ Num and predict_ Conversion of num
Are you familiar with redis cache of highly paid programmers & interview questions series 114? How are redis keys designed? Are you familiar with the memory obsolescence mechanism?
SQL functions -- converting a one to many relationship to a one to one relationship
【云原生】Nacos中的事件发布与订阅--观察者模式
Interaction between awk language and Oracle database for nearly half a year
Problème de sous - séquence / substrat leetcode
History of hash index design
“不敢去懷疑代碼,又不得不懷疑代碼”記一次網絡請求超時分析