一、前言

在工作中,尤其是传统企业中,面不了会用到报表(包含图表,子报表,交叉表等的复杂布局)展示数据。学习JasperReport,是因为经历了GRID++报表开发的痛苦(尤其是IE兼容性问题极其严重)、不顺手。

二、eclipse集成

TIBCO Jaspersoft StudioJasperReports库JasperReports服务器的基于Eclipse的报表设计器;虽然,它挺好的;只是,开发人员已经习惯了现有电脑的eclipse(或idea),为了开发效率,它可以作为Eclipse插件使用(主要原因是我喜欢eclipse DevStyle主题 ^_^)。

eclipse > Help > Eclipse Marketplace

三、主界面和报表设计视图

学习参考:https://blog.csdn.net/deniro_li/article/details/73610105

  • 编辑器
页签 说明
Design 可视化的报表设计区域。
Source 报表对应的 JRXML 源代码。
Preview 预览报表设计的效果。
  • 辅助视图
视图 说明
Repository Explorer 维护报表的数据来源。
Project Explorer 维护项目目录(当前的 workspace 下)。
Outline 本张报表的结构,在预览模式下,为空。
Properties 查看或者编辑某个报表元素的属性,可以打开多个元素的属性视图。
Problems 展示问题或者错误。
Report state summary 报表执行控制台、错误日志、统计信息。
  • Design

我们一般在 Design 页签中设计报表。报表分为几个不同的水平分割部分,它们都被叫做栏(Band),可以把这些报表元素放在这些栏中。每一个栏根据它们的特性,可能会被重复多次。比如 页头(page header)在每一页都会被重复一次,而 detail band 中的内容,在每一条记录中都会被重复一次。

因为布局是可视化的,所以几乎可以忽略它们底层的源代码(JRXML)。

Design 页签预先定义了 9 个栏。一个栏的宽度与页面的宽度相同(不包括左右外边距)。一般来说,栏 的高度会自动适配实际内容,但有的栏是固定的,比如 Column footer、page footer 以及最后一页的 last page footer 的栏。

下面是栏的类型:

Band 名称 说明
Title 标题。它只会出现一次,可以被打印在一个独立的页中做封面(这种情况下,这个栏的高度不会被计算到所有栏的总高度中)。
Page Header 页头。它会出现在所有的被打印的页面中(如果 Tile 和 Summary 被打印在独立页中的话,那么就不会打印页头)。
Column Header 每一页的数据顶部栏。一般放数据表中的列名。
Group Header 分组的顶部栏。可选或者可以有多个。一般与 Group footer 配合使用。可以设置它的最小高度,但如果它的实际高度超过了这个最小值,那么它就会被打印到新页上,这一点一定要注意!
Group Footer 分组的底部栏。
Column Footer 每一页的数据底部栏。
Page Footer 页尾。
Last Page Footer 最后一页的页尾。可以通过它设计一个与其他页的页尾与众不同的效果。如果它的高度被设置为 0,那么它将被完全忽略。
Summary 摘要栏。一般放置汇总的统计数据。
Background 背景。可以在这里加水印。它可以被设置的最大高度是页面的高度。
Detail 显示数据,如:Fields变量
  • JasperReport列出以下可选的尺寸格式:
页面格式 尺寸(像素) 页面格式 尺寸(像素)
Letter 612x792 B0 2836x4008
Note 540x720 B1 2004x2836
Legal 612x1008 B2 1418x2004
A0 2380x3368 B3 1002x1418
A1 1684x3368 B4 709x1002
A2 1190x1684 B5 501x709
A3 842x1190 ARCH_E 2592x3456
A4 595x842 ARCH_D 1728x2593
A5 421x595 ARCH_C 1296x1728
A6 297x421 ARCH_B 864x1296
A7 210x297 ARCH_A 648x864
A8 148x210 FLSA 612x936
A9 105X148 FLSE 612x936
A10 74X105 HALFLETTER 396x612
11X17 792x1224 LEDGER 1224x792

四、报表元素

学习参考:https://blog.csdn.net/deniro_li/article/details/77850188

  • 基础元素

五、spring boot 集成

采用 spring-boot 1.5.14.RELEASE

           <dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version></dependency>          <dependency><groupId>net.sf.jasperreports</groupId><artifactId>jasperreports</artifactId><version>6.9.0</version></dependency><dependency><groupId>net.sf.jasperreports</groupId><artifactId>jasperreports-fonts</artifactId><version>6.9.0</version></dependency><dependency><groupId>net.sf.jasperreports</groupId><artifactId>jasperreports-functions</artifactId><version>6.9.0</version></dependency>              

六、解决中文显示

网上有替换字体的、有更换 jar 包的,一一使用都不完美。后来发现了此文章(感谢他):http://www.itclj.com/blog/5a0b079d81c06e4103ef5129 ,使用之后真不错!终于,解决了中文显示的难题。

jasperreport 源码

我使用的是:华文宋体;fonts.xml

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies><fontFamily name="华文宋体"><normal>fonts/STSONG.TTF</normal><bold>fonts/STSONG.TTF</bold><italic>fonts/STSONG.TTF</italic><boldItalic>fonts/STSONG.TTF</boldItalic><pdfEncoding>Identity-H</pdfEncoding><pdfEmbedded>true</pdfEmbedded><exportFonts><export key="net.sf.jasperreports.html">'华文宋体', Arial, Helvetica, sans-serif</export><export key="net.sf.jasperreports.xhtml">'华文宋体', Arial, Helvetica, sans-serif</export></exportFonts></fontFamily>
</fontFamilies>

jasperreports_extension.properties

net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.lobstertwo=fonts/fonts.xml

STSONG.TTF  字体下载,可以去 WIN10 控制面板 COPY。

预览效果:

七、参考文献

  • http://www.itclj.com/blog/5a0b079d81c06e4103ef5129
  • https://blog.csdn.net/SHIYUN123zw/column/info/31009
  • https://community.jaspersoft.com/documentation/tibco-jaspersoft-studio-user-guide/v750/getting-started-jaspersoft-studio
  • http://www.bubuko.com/infodetail-2492974.html

八、下期预告

  • map填充报表;javaBean填充报表
  • 展示分组报表

(二)Hello world JasperReport相关推荐

  1. jasperreport mysql_一步一步学iReport + JasperReports(二) :JasperReport初级教

    本文可以定位于 认识IReport这个IDE本身及其基本用法 ,学习时,你不需要全部实现此文章中的例子,只要理解便可,具体用法将在后面提到, 本文主要讲述了ireport的下载.安装和界面介绍,以及基 ...

  2. Jasperreport之与Springboot整合

    环境: jdk1.8 Jaspersoft Studio 6.5.0 Jasperreport 6.5.0 Springboot 1.5.x 一  用Jaspersoft Studio报表设计器设计一 ...

  3. JasperReport学习笔记2-创建简单的报表例子

    http://www.iteye.com/topic/399750 一,创建简单的jrxml文件 Xml代码   <?xml version="1.0"?> <! ...

  4. 利用JasperReport+iReport进行Web报表开发

    用JasperReport+iReport进行Web报表开发 序言 在非常多实际的项目里,报表都是当中十分重要的组成部分,比如把查询结果以报表的形式呈现出来.这里所提到的报表可不是简单的二维表,而是拥 ...

  5. JasperReport里面的Demo

    1. alterdesign 该例子演示了报表编译后,在报表展现的时候如何动态的控制其中的元素 比如让某一个矩形变色或其他 2. antcompile 演示如何让 ant 来编译 3. chart 演 ...

  6. JasperReport+iReport进行java报表开发

    一  相关基础知识     1.关于JasperReport和iReport     Jasperreport是一个报表制作程序,用户需要按照它制定的规则编写一个XML文件,然后得到用户需要输出的格式 ...

  7. JasperReport报表设计总结

    1)定制报表格式.   有二种方式,一种就是写jrxml文件,其实就是xml文件,只不过是后缀名不一样罢了.另一种方式更直接,就是生成一个JasperDesign类的实例,在japsperDesign ...

  8. iReport与JasperReport简介

    一.iReport与JasperReport简介 1.1   简介 JasperReport是报表的引擎部分,界面设计是用iReport.为什么选择这两个软件呢?因为这两个软件都是开源的,即免费的(虽 ...

  9. pdf报表的制作入门,JasperReport

    PDF报表的制作入门,JasperReport 概述 在企业级应用开发中,报表生成.报表打印下载是其重要的一个环节.在之前的课程中我们已经学习了报表中比较重要的一种:Excel报表.其实除了Excel ...

最新文章

  1. 10 个 Python 工程师,9 个不合格!
  2. HDOJ2203 亲和数
  3. php基于laravel框架的批量插入操作
  4. shell中$XX相关
  5. 旅游景点人物进出系统[OC项目]
  6. Java黑皮书课后题第6章:**6.3(回文整数)使用下面的方法头编写两个方法:……使用reverse方法实现isPalindrome。如果一个数字的逆序数和它自身相等,这个数就称为回文数。
  7. Mysql字符串截取 mysql将字符串字段转为数字排序或比大小
  8. 正则表达式总结及一些有用的例子
  9. 竞彩足球混合过关赔率API调用示例代码
  10. 查看vs支持的c#语言版本/查看.NetCore版本/更改c#语言版本
  11. 网络安全实验 缓冲区栈溢出实验 Ollydbg
  12. c语言编译器C11,如何检测c11支持编译器与cmake
  13. c语言程序设计杨明莉刘磊答案,清华大学出版社-图书详情-《C/C++程序设计基础与实践教程(第2版)》...
  14. [书籍精读]《移动WEB前端高级开发实践》精读笔记分享
  15. 牛掰了!鸿蒙与Android完美融合,将鸿蒙设备当Android设备用
  16. 基于php732电子杂志投稿审核网站
  17. 灰色关联度分析(Grey Relation Analysis,GRA)原理详解
  18. html做万用表效果,一种万用表的制作方法
  19. Linux——DHCP篇
  20. although 与 though 的区别

热门文章

  1. 一篇文章讲清NB-IoT技术
  2. 安全架构--11--企业数据安全体系建设总结
  3. Lidar_imu自动标定源码阅读(六)——run部分
  4. 46.变分自编码器 VAE
  5. 自己定义进度条PictureProgressBar——从开发到开源公布全过程
  6. 2023年华数杯国际大学生数学建模竞赛B题
  7. MVC 网上零食销售系统的设计与实现java jsp 程序设计 课程设计 毕业设计-附源码02139
  8. 相对布局RelativeLayout音乐播放器界面
  9. python 在线教程-python在线学习
  10. TX 和RX 代表什么