简介

在企业级应用开发中,报表生成、报表打印下载是其重要的一个环节。在之前的课程中我们已经学习了报表中比较重要的一种:Excel报表。其实除了Excel报表之外,PDF报表也有广泛的应用场景,例如货运详情,货运单等。

目前世面上比较流行的制作PDF报表的工具如下:

  1. Jasper Report:是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF。Jaspersoft Studio的前身。
  2. iText PDF:iText是著名的开放项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。
  3. Openoffice:openoffice是开源软件且能在windows和linux平台下运行,可以灵活的将word或者Excel转化为PDF文档。

常见操作

  1. 模板编辑器Jaspersorft Studio下载地址Find out more about Jaspersoft Studio | SourceForge.net
  2. JRXML:报表填充模板,本质是一个XML;Jasper:由JRXML模板编译生成的二进制文件,用于代码填充数据。
  3. 如何打开已经隐藏的窗口:菜单栏依次选择window→show view→other→已经隐藏的窗口名→Open
  4. 在TIBC Jaspersoft Studio 6.2.0版本下,在打开jasper文件编辑时在软件中是以jrxml文件格式进行体现的,要使用jxml文件进行模板编辑,在编辑完点击“Save”按钮,作用是:将当前编辑的结果保存成新版本的jrxml文件,并未生成新的jasper文件;点击“Compile Report”按钮,作用:根据当前编辑完成的jrxml文件内容,保存生成与之对应的jasper文件。
  5. 查看当前模板的纸张大小信息:鼠标移至模板页面左边线上部区域,点击鼠标右键,弹出模板菜单页面,在模板菜单页面点击“Page Format…(页面格式…)”按钮,调出纸张设置对话框。
  6. 新建模板步骤:在菜单栏中依此选择File→New→Jasper Report,进入到Report Templeates(报表模板)界面;在Report Templeates界面选择需要的模板,点击“Next”,进入到Report File(报表文件)界面,可修改模板存放路径和模板名称;在Report File界面点击“Finish”,完成报表模板创建(点击“Next”按钮,进入到Data Source(数据源)配置界面,不需要操作)。
  7. 在模板中添加元素:在“Palette”视窗中,选中自己所需要的元素(动态文本、静态文本、条形码文本等等),拖拽至模板中对应的位置上,完成模板元素新增操作。
  8. 在模板中给元素添加框架:通过鼠标选中所需元素,点击鼠标右键,弹出菜单页面,点击“Enclose into Frame”按钮,完成元素框架添加。
  9. 给动态文本添加字段:在“Outline”(大纲视图)菜单中,选中“Field”按钮点击鼠标右键,弹出菜单,点击“Create Field”按钮,在软件界面右边弹出字段的“Properties”(属性栏)窗口,可编辑字段的名称、字段描述、字段类(class,选择“java. Lang.String”)。
  10. 更改文件存储的位置:打开主菜单“File —> Switch WorkSpace”,选择你打算存放报表工程及报表设计文件的目录。
  11. 建立数据库连接:在“Repository Explorer”页签,依次进入“Data Adapter—>Create Data Adapter—>数据库连接方式(一般选择Database JDBC Connection)—>数据库连接配置(填写所连接数据库配置信息)—>Driver Classpath(添加相应数据库的jar包的存放路径)”
  12. sqlserver本人选择框起来那个,选择另一个报错,所以看个人工具及数据库版本

    连接数据库需要添加相应的jar包

    MySQL:

    Sqlserver:

  13. 建立主数据源(主档数据源)

界面元素解释

名称

翻译

备注

Jrxml

jaspersoft的编辑文件格式

一种XML文件格式,用于保存和共享为JasperReports库和使用它的应用程序(如JasperSoft Studio和JasperReports服务器)创建的报表。JRXML是一种开放格式,它使用XML标准精确定义报表的所有结构和配置。

Jasper

jaspersoft的运行文件格式

JRXML模板编译生成的二进制文件,执行PDF报表打印的代码运行格式文件。

Title

标题面板

只在首页打印一次 ,报表面板

Detail

内容面板

详情,根据数据数量,自动循环输出,报表面板。

Column  Header

行首面板

通常用来定义行的字段名称。每页都打印,报表面板。

Page  Header

页首面板

每页都打印,报表面板。

Page  Footer

页尾面板

每页都打印,报表面板。

Column Footer

行尾面板

可用来告知报表的一些参数,诸如页码等。每页都打印,报表面板。

Last Page Footer

最后页的页尾面板

只在最后页打印一次。

Palette

调色板

调色板包含三个部分:Basic Elements(基本元素),Composite Elements(复合元素,其他元素组合创建的元素), Components(组件,软件商业版中可用元素)。通过拖拽调色板中的三个部分的元素至报表各类面板中,实现元素在报表中的新增 。

Composite Elements

复合元素

复合元素是一个或多个可以在报表中使用的预配置元素。你可以配置元素的大小、颜色或字体等属性,或创建具有复杂经常使用的表达式,然后将其另存为复合元素。复合元素不能包含基于数据集的元素,例如图表或交叉表。

Basic Elements

基本元素

报表的基本构造块是元素,一切都是通过元素创建的,元素可以包含文本、创建表格、显示图像等。

Note

备注

Basic Element里的元素,

Text Field

字段文本

Basic Element里的元素,动态文本字段允许您打印使用表达式创建的任意文本部分(或数字或日期)。

Static Text

静态文本

Basic Element里的元素,通常标题使用此格式。

Image

图片

Basic Element里的元素

Break

强制分页符

Basic Element里的元素

Rectangle

矩形

Basic Element里的元素

Ellipse

椭圆

Basic Element里的元素

Line

线条

Basic Element里的元素

Frame

框架

Basic Element里的元素,框架是一个矩形元素,可以包含其他元素,还可以选择在它们周围绘制边框。框架内的元素是相对于框架而不是相对于标注栏定位的,当移动框架时,框架中包含的所有元素都会一起移动。框架会自动拉伸以适合其内容。

Subreport

子报表

Basic Element里的元素

Barcode

条形码、二维码

Basic Element里的元素

Chart

图表

Basic Element里的元素

Properties

属性栏

元素属性分为多个类别,通过“属性”视图中的选项卡可见。可用的属性依赖于元素类型。类别包含以下几类:Appearance、Borders、Element、Inheritance、Hyperlink

Appearance

外观选项卡

外观选项卡允许您设置元素的位置、大小、颜色和文本样式。

Borders

边框选项卡

允许设置元素的填充和边框样式、颜色和宽度。

Text Field , Note,

Static Text, Image,and so on

元素名

允许设置评估时间以及特定于元素类型的属性。例如:静态文本选项卡允许您为字段定义不可更改的文本,并控制其外观;文本字段选项卡允许设置文本字段元素的格式和位置;图像选项卡允许您设置图像对齐、填充和缩放属性。

Inheritance

继承选项卡

会显示当前元素的基本属性(Element attributes),能够重置当前属性(Reset Elements Properties),会显示报表的默认属性(Default attributes),允许查看从其他级别继承的任何属性,并在可能时覆盖这些属性。

Horizontal Alignment

水平对齐位置

选项:CENTER(居中对齐)、LEFT(左对齐)、RIGHT(右对齐)、JUSTIFIED(两端对齐)

Bold

字体加粗

选项:True(加粗)、Flase(不加粗)

Box  Top/Bottom/Left/Right Line Style

上/下/左/右边框线类型

选项:Solid(实线)、Dashed(虚线)、Dotted(点线)、Double(双实线)

Box Top/Bottom/Left/Right Line Width

上/下/左/右边框线宽度

Backcolor

背景色

Hyperlink

超链接选项卡

允许在元素中定义图像、文本字段和图表的超链接。

java. Lang.String

常量字符串

Undo

撤消

Redo

恢复

Outline

大纲视图

包含了当前编辑的报表的所有基础信息,包括一些固定区域的样式(Style)、报表参数(Parameters)、字段(Fields)、变量(Variables)、直接链接((Title)标题面板、(Detail)内容面板等)等,我们可以方便地查看和修改。点击一个面板的链接之后,我们可以在右侧的属性视图(Properties)中查看和修改该面板对应的一些基本属性,如高度、布局。

从大纲视图中我们发现,一个报表包含很多固定的面板。在每一个报表中标题和汇总(summary)面板只打印一次,页眉(header)和页脚(footer)在报表的每一页都会独立打印。我们可以直接在field中新增、删除字段,还可以将字段拖拽到报表的细节面板中,Jasper Studio将会为我们创建一个文本字段(text field)元素,并设置其值为对应字段的数据。文本字段不应出现在除细节面板之外的其它地方。

Field

字段

大纲视图下的子单元菜单,在报表中,有三组对象可以存储值:字段(Field)、参数(Parameters)和变量(Variables)。点击“Create Field”按钮,对当前报表进行新增字段;“Field”表单下会显示当前报表中所有的字段信息。

Parameters

参数

大纲视图下的子单元菜单,在报表中,有三组对象可以存储值:字段(Field)、参数(Parameters)和变量(Variables)。

Variables

变量

大纲视图下的子单元菜单,在报表中,有三组对象可以存储值:字段(Field)、参数(Parameters)和变量(Variables)。

Text Field Menu

动态文本菜单

鼠标在面板中选中动态文本,点击鼠标右键,弹出菜单,菜单目录如下:

Undo Change Text Field Expression:撤消更改文本字段表达式

Redo:恢复

Cut:剪切

Copy:复制

Paste:粘贴

Copy Format:

Enclose into Frame:装入框架

Save as Composite Element:

Add to Template Set:

Delete:删除

Show Properties:

Order:

Align in Container:

Size to Container:

Arrange In Container:

Oragnize as Table:

Add Detail Band:

Stretch To Content:

Convert to Static Text:转换为静态文本;将动态文本属性调整成静态

Fit text in element:在元素中调整文本;

JSON Tags:

CSV Tags:

XLS Tags:

PDF 508 Tags:

Report State

报告状态

操作编译jasper文件中的jrxml源文件时,显示编译运行的日志信息

Page Format

页面格式

主要是模板页面的属性信息,包含:Format(纸张大小,A4、A3等等),Width(纸张宽度),Height(高度),Page Orientation(页面方向,包含选项:Portrait(纵向)、Landscape(横向)),Units(单位,cm、mm、pixel等),Margins(边距,包含:Top(上部)、Bottom(下部)、Right(右边)、Left(左边)),Columns(面板,包含:Columns(面板数量)、Column Width(面板宽度)、Space(空间)、Print Order(打印顺序,包含选项:Vertical(垂直)和Horizontal(水平)))。

Location

坐标

以当前元素的左上角的坐标作为当前元素的坐标。

Parameters 下的那些灰色参数,表示是系统级的参数,不能编辑或者删除它。

Jaspersoft Studio 定义了一些内置参数(Parameters),具体说明如下:

内置参数

说明

REPORT_PARAMETERS_MAP

使用者调用 API 中的 fillReport() 方法所传入的 Map 型键值对参数。

REPORT_CONNECTION

报表中的 JDBC connection,用于执行 SQL 语句。

REPORT_MAX_COUNT

报表所能填充的最大记录数。如果未指定,则没有限制。

REPORT_DATA_SOURCE

如果没有使用 JDBC connection(比如非数据库的数据源 CSV 等),将会使用这个参数。

REPORT_SCRIPTLET

报表创建时的脚本实例,默认使用 net.sf.jasperreports.engine.JRDefaultScriptlet。

REPORT_LOCALE

locale 区域设置,一般用于国际化场景。默认为系统值。

REPORT_TIME_ZONE

所在时区,默认为系统值。

REPORT_FORMAT_FACTORY

默认实现是 net.sf.jasperreports.engine.util.FormatFactory。可以参考该工厂类,实现自定义工厂。

REPORT_CLASS_LOADER

可用于设置报表填充时的 class loader。

REPORT_URL_HANDLER_FACTORY

可用于指定创建 URL handlers 实现工厂。

REPORT_FILE_RESOLVER

默认实现是 net.sf.jasperreports.engine.util.FileResolver,用于解析报表中的资源路径,也可以自定义。

REPORT_VIRTUALIZER

定义报表填充器的实现类,默认为 JRVirtualizer 接口的实现类。

IS_IGNORE_PAGINATION

Boolean 类型,分页开关。默认情况下,除了导出 excel 与 HTML 之外,其它情况不分页。

常见问题处理

问题

原因

解决方法

Element reaches outside frame width:x =0,width=122,available width=120

元素达到外部框架宽度:x=0,宽度=122,可用宽度=120

根据报错信息,调至到Source界面,查看错误元素位置,在模板中进行调整修改

An internal error occurred during: "Building report".java.lang.Null Pointer Exception

在代码来源(Source)一栏中报表代码中某个元素的类型开始和结束不一致

正确表达式为:

eld>

ield>

Text>

cText>

在Jaspersoftstudio软件界面,针对编辑好jrxml格式的文件,点击“Compile Report”按钮,无法保存生成jasper文件

Jaspersoftstudio生成jrxml的版本与打开jrxml的版本不一致

使用新版本的Jaspersoftstudio打开jasper文件重新生成jrxml。

根据模板(模板仅一页内容)执行打印时,打印机会打印出一张有内容的和一张空白页,或会进行正反两面打印(一面有内容一面没内容)

维护模板时模板有空白页产生

针对仅有一页内容的模板,在每次编辑模板完成时都需要点击“Preview”进行模板预览,在模板预览界面中如果发现“Page 1 of 2”,那么就表示改模板占据两页,存在空白页,需要在“Outline”下选择当前模板的Properties(属性栏)找到“When  no data type”一栏,选择“All Sections No Detail”,再点击“Compile Report”按钮,进行jrxml文件保存,再点击“Preview”进行模板预览,如果还不行,增大模板下边框间距,确保模板内容不超过纸张底线,再点击“Compile Report”按钮,进行jrxml文件保存,再点击“Preview”进行模板预览。

在编辑打印模板时,添加条码组件后,打印后会将条码中的数值显示到条码下方

Jaspersoftstudio软件高版本中会自动将条码信息以明文的形式显示出来

使用TIBC Jaspersoft Studio 6.2.0版本进行编辑带有条码组件的模板。

提示报错:

There are compilation errors please fix the design.

详细报错:

Invalid character constant

Errors were encountered when compiling report expressions class file:

使用了Jasper格式进行编译预览,导致无法保存

可以使用jasper文件对应的rxml文件在设计器中进文件行编译

详细报错:

The operator / is undefined for the argument type(s) java.lang.String,java.lang.String

Error were encountered when compiling report expressions class file:

当配置单打印显示为null时

jasper模板中动态文本的编号未在模板字段关系中维护关联关系,导致无法映射关联取值

在模板字段关系中维护关联关系

当配置单打印显示为N/A时

根据模板字段关系的关联关系,校验取值取到空值

当配置单动态取值打印照片显示为空白时

1、jasper模板中动态文本的编号未在模板字段关系中维护关联关系,导致无法映射关联取值

2、根据模板字段关系的关联关系,校验取值取到空值

在jaspersoft中创建模板报表,连接数据库,编辑执行查询视图的SQL语句后,点击Jaspersoft中的预览界面,正常输入变量参数,无法预览。预览界面显示“Document is empty”。

因为对用的数据库表中无结果数据

在对应的数据表中插入数据,使得查询的视图中存在可用数据。

获取打印模板通过打印服务器进行打印时,发现打印内容不展示,空白显示(有时候会出现部分信息能够打印显示,部分信息不能够打印显示)

打印服务器字体中不包含打印模板中的字体,导致无法进行信息展示

将打印模板中的字体调整为打印服务器中有的字体

通过Jaspersoft Studio设计器打开别人发的jasper格式文件时,页面有报错提示:Failed to create the part‘s controls ,紧接着页面关闭。

接收到的jasper格式文件采用的是低版本( 6.2.0

)的Jaspersoft Studio设计器编译生成的,高版本的设计器在打开时不兼容

使用高版本的Jaspersoft Studio设计器打开对应jrxml文件进行重新编译生成jasper文件

函数表达式

表达式

含义

备注

"".equals( $F{D020} )?"X":$F{D020}

当变量D020的值等于空字符串时,返回为“X”,否则,返回对应的变量值

equals()方法用于判断两个对象是否相等。

$F{D090}.replace("|","\n")

当变量D090的值中出现“|”时,将“|”替换成换行符

replace() 方法通过用 newChar 字符替换字符串中出现的所有 searchChar 字符,并返回替换后的新字符串。

null==$F{D001} ?"":$F{D001}.concat("_").concat($F{D006})

当变量D001的值为null时,将变量D001的值赋予为空字符串,否则,将返回对应的变量值,最后将D001值和D006值用“_”进行拼接。

concat() 方法用于将指定的字符串参数连接到字符串上。

$F{H004}.substring(0,4)

截取变量H040的值前四位

substring(int,int)

null == $F{D020} || "".equals( $F{D020} )?"X":$F{D020}

当变量D020等于空字符串或null值时,返回为“X”,否则返回对应的变量值

Jaspersoft Studio软件使用相关推荐

  1. TlBCO Jaspersoft Studio 软件根据条件设置字体颜色

    最近客户提出一个需求,根据结果不一样设置字体颜色,我一听客户提出的要求,真想打死他,没办法只能撸起袖子干,在网上找些资料,很少,研究一点API,最终实现了.记录我的实现过程,希望能帮助大家. 1.找到 ...

  2. 模板设计器Jaspersoft Studio、结合JasperReports输出报表

    Jaspersoft Studio是一个图形化的报表设计工具,可以非常方便的设计出PDF报表模板文件(其实就是一个xml文件),再结合JasperReports使用,就可以渲染出PDF文件. 1.下载 ...

  3. 玩转 Jasper Report(1) Jaspersoft Studio 安装使用教程

    文章目录 1 摘要 2 Jaspersoft Studio 下载安装 3 导出PDF的完整示例 4 当前示例的 jasper 源码 5 推荐参考资料 1 摘要 Jasper Report 作为一个老牌 ...

  4. jaspersoft studio实践 --实现网页版打印小票(模板一)

    由于项目业务需要,需要开发一个打印票据的需求.于是前面找了一堆资料来简单学习了下,就开始自己动手开发起来了,下面直接细说. 首先小票模板的设计就用到了Jaspersoft Studio这个软件(如果需 ...

  5. 【PDF报表】Jasperreports+jaspersoft studio快速入门

    目录 一.JasperReport简介 二. JasperReport的开发步骤 1.生命周期 2.执行流程 三.模板工具Jaspersoft Studio 1.概述 2.安装配置 3.面板介绍 4. ...

  6. 说说下一代的报表设计器——Jaspersoft Studio

    大家所熟知的报表设计器应该是 iReport,现在已经不再维护咯,Jaspersoft 公司已经把资源转向了 Jaspersoft Studio,所以我们就来看一看这个新一代的设计器吧. Jasper ...

  7. Jaspersoft Studio入门:从模板创建报告,并创建数据源

    Jaspersoft Studio is a plugin for Eclipse that lets you create reports from a datasource (usually a ...

  8. Jaspersoft Studio简介

    参考来源:https://community.jaspersoft.com/documentation/tibco-jaspersoft-studio-user-guide/v640/introduc ...

  9. jaspersoft studio创建jasperreport模板 summary显示page header(页眉)

    使用jaspersoft studio创建模板,page header在每页都显示,但是当这页只有summary部分时,就不显示page header. 解决方法:强制让page header在sum ...

最新文章

  1. Linux下的编译(环境是centos6.8 gcc 4.4.7)
  2. mysql查询某一时间段之后数据的sql_mysql进阶(十九)SQL语句如何精准查找某一时间段的数据...
  3. 手把手教你用 TensorFlow 实现文本分类(下)
  4. wordpress 文章页面 (single.php)
  5. python对csv数据提取某列的某些行_python pandas获取csv指定行 列的操作方法
  6. python ** 运算符_Python语法基础(2)运算符
  7. svnant-不可映射字符编码
  8. python dict排序
  9. TFN推出2.5G传输分析仪D240S 等待您来验证
  10. 基于Rasa_NLU的微信chatbot
  11. 在pytorch中实现十折交叉验证
  12. 破解寝室安装老毛子路由器校园网电信闪讯锐捷认证
  13. python中获取中位数的两种方法
  14. Android蓝牙配对
  15. php accesscontrolallowcredentials,No Access-Control-Allow-Origin 跨域错误解决
  16. python搜索pdf内容所在页码_使用pyPDF从文档中检索页码
  17. python基础知识ppt
  18. VMware安装优麒麟20.04LTS
  19. java怎么打开控制台_java控制台怎么打开?如何启用和查看 Java 控制台?
  20. idea 连接达梦数据库

热门文章

  1. ug帮助找不到html文件,UGNX5.0帮助文件
  2. android常问面试题及答案 经典
  3. 每日IN语(2009-01-02)
  4. 【python学习】第三节:变量(1)数字和字符串
  5. 英语六级高频词汇速记 + 2020-9听力 Day10
  6. CSerialPort教程(1) - CSerialPort项目简介
  7. PHP在线支付接口集成教程
  8. json c语言 数组,cjson创建数组
  9. 世界上的语言 Languages In The World
  10. CFA知识点:从供需平衡角度看央行货币政策是怎么玩儿的