介绍
Jaspersoft:这是基于Eclipse软件开发的图形化报表设计工具。
快速上手
创建项目与模板
- 创建项目
- 选择项目类型
- 输入项目名称
- 创建模板
- 选择模型
- 模板名称
项目目录结构展示
OutLine元素列表
基本元素
<font color="red">模板参数(常用)</font>
Report Name : 模板名称,注意,如果你复制了一份模板文件,这个地方是没有修改的。
Description : 模板描述,这个模板文件是干什么的,起注释作用。
Language : 有三种 Java | groovy | javascript, 这里指定报表表达式使用的语言。
Imports : 引入其他包,自定义,或者第三方
Format Factory Class : 翻译 (指定实现要与此报表一起使用的接口的类的名称。如果省略,将创建的实例)
When No Data Type: (当打印的报表数据源中没有数据的情况下,也就是数据源为空的情况下)
null: 默认,不选择。
No Pages: 不打印数据。
Blank Pages:返回一个空白的页面。
All Sections No Detail: 打印除了Detail 之外的所有页面。
No Data Section: 把No Data的Band 的也打印出来。
Report 属性 描述
Title On A New Page 表示 Tilte Band 单独一页打印。
Summary On A New Page 表示 Summary 单独一页打印。
Summary With Page Header And Footer 表示在Sumnmary最后一页,也显示Header头 和 Footer脚
Float Column Footer 在最后一页,Column Foot(列脚)是否紧挨着最后一个Details
Ignore Pagination 忽略分页
Create bookmarks 创建书签
Dataset 参数
When Resource Missing Type:(当资源的属性错误时)
Null: 默认,为Null。
Empty: 为空。
Key: 输出key
Error:报错,异常。
Scriptlet Class: (网上百度)自定义scriptlet,可在报表生成时自定义一些行为。
Resource Bundle: 资源绑定,报表所用资源文件。
Default Data Adapter: 默认数据源,在这里,可以选择数据源配置在哪里
_
数据源配置
Page Format:报表格式化
简单报表
新建模板
- 保留Title和Detail1
- 配置主表中的数据源和查询集
- 如图
可以通过vairiable变量表达式进行聚集函数运算的作用
<font color="red">主报表与子报表相互传参</font>
主报表配置
为什么使用主报表和子报表?
因为Detail1代表一条数据,所以需要展示一对多的样式(要求居中垂直)时只凭一张报表无法胜任,这个时候使用subreport组件就是解决方案之一,但是编译的时候会将子报表也进行编译。- 样式配置
配置数据源
子报表配置
- 样式配置
只需要保留Detail即可
根据报表的格式进行设置,将Detail的宽度和高度和里面的元素大小保持一致 - 创建参数
需要和主报表传过来的参数保持一致,主报表中的参数后面会讲到如何设置。
将子报表配置放在前面是因为在拖拽subreport时需要选择已存在模板。 - 配置数据源和查询条件
右键OutLine中当前报表,选择 DataSet and Query...
选项 预览
在主报表中配置SubReport组件
- 拖拽SubReport组件至主报表中
选择文件
- 选择相同连接
设置参数
<font color="red">细节调整</font>
如果主表中的表格高度无法匹配子报表中的数据,那么需要手动设置主表单元格的参数
1.1 更改Position Type
1.2 更改Stretch Type
如图主报表的表格动态高度设置
<font color="red">报表上传时的注意事项</font>
- 目前需要将主子报表进行打包成zip格式
需要在压缩包里存在一个xml文件,用来描述主子报表的关系,示例如下
<jrxml name="Main"> <item name="Sub"/> </jrxml>
<font color="red">合并行内容的第二种方案:使用CrossTable组件</font>
使用crosstable的需要提前设计好表格的样式(需要展示多少个属性,展示在什么地方)
CrossTab需要放在Summry的Band中使用sql语句查询的时候多放置一个字段
select uname,itemname,insure,insurepor,opermoney,extramoney,opermorate,1 a from insure where opermoney >$P{condition} order by uname
设置横列
用多余的就可以,注意是否需要total
设置竖列
展示多少个属性
设置交叉值
用竖列的其中一个属性就可以
设置Cloumn group高度
设置高度为0px
设置水平居中、垂直居中
合并行的第三种方案:取消属性Print Repeated Values(不推荐)
这种方案只是提供一种思路,建议还是通过subreport或者crosstable组件来实现行的合并
报表样式配置
一般来说需要合并的都会展示在最左边设置属性
将Print Pepeated Values这一项设置取消勾选加入一个Line组件
由于左侧会取消打印重复的行,所以这个时候的左侧除第一行外会空出来一部分,所以需要加入一个Line组件并设置location和size为float和ContainerBottom。
<font color="red">使用Table组件</font>
- 拖拽Table组件
- 配置数据源
右键DataSet1和主报表中设置数据源的方式一致。 合并单元格
细节调整
- table组件的detail不能超过主报表中的高度,否则会报错
设置variable变量来进行聚合运算的时候将表达式转换为数值型,否则可能不会生效
柱状图和饼图
柱状图
- 使用Chart组件,选择BarChart
- 设置四维参数 Series、Value、Category和Label
与常见统计的highchart和echart类似
假设我要统计1991年到2021年各产业的GDP,Value就是只GDP的具体数值,Category就是指年份[1991~ 2021],而Series就是指第一产业到第三产业。
注:label一般来说不需要关注,如果只显示最后一个值的话那么就将Lable和Category设置成一样的。
注意:value为数值类型如Long、Double等,否则预览时会出错。 - 创建DataSet并传递参数
点击上一步的DataSet中的parameters就可以设置参数
需要向当前的SubDataSet中传入参数,可以是Main DataSet中的Fields中的其中一个属性。 如果是单柱状图,则不需要Series,将Properties中的Show Legend设置为false。
饼图
- 使用Chart组件,选择PieChart
- 设置Series、Key、Lable、Value
设置DataSet
和柱状图一样根据需要传递参数
<font color="red">一定要设置图表的字体,当前电脑的字体和与服务器支持的字体不一致,所以需要手动设置字体</font>报表平台上传模板文件
- 检查是否有对应数据源,如果没有需要新建
- 报表管理中上传
- 实例化
预览
SpringBoot中集成Jaspersoft
新建SpringBoot项目
导入依赖
添加模板的静态资源
在生成pdf时可能会有乱码的问题出现,所以需要添加字体的静态资源
在使用Jaspersoft软件的过程中也需要设置字体
- 将字体文件添加到字体库中
- 修改模板格式
- 调用export方法生成html或者pdf
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。