(二)Hello world JasperReport

一、前言

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

二、eclipse集成

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

eclipse > Help > Eclipse Marketplace

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

学习参考:https://blog.youkuaiyun.com/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列出以下可选的尺寸格式:
页面格式尺寸(像素)页面格式尺寸(像素)
Letter612x792B02836x4008
Note540x720B12004x2836
Legal612x1008B21418x2004
A02380x3368B31002x1418
A11684x3368B4709x1002
A21190x1684B5501x709
A3842x1190ARCH_E2592x3456
A4595x842ARCH_D1728x2593
A5421x595ARCH_C1296x1728
A6297x421ARCH_B864x1296
A7210x297ARCH_A648x864
A8148x210FLSA612x936
A9105X148FLSE612x936
A1074X105HALFLETTER396x612
11X17792x1224LEDGER1224x792

 

 

四、报表元素

学习参考:https://blog.youkuaiyun.com/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。

 

预览效果:

 

七、参考文献

 

八、下期预告

  • map填充报表;javaBean填充报表
  • 展示分组报表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值