(二)Hello world JasperReport

一、前言

    在工作中,尤其是传统企业中,面不了会用到报表(包含图表,子报表,交叉表等的复杂布局)展示数据。学习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。

 

预览效果:

 

七、参考文献

 

八、下期预告

  • map填充报表;javaBean填充报表
  • 展示分组报表
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章