强制要求:版本6.3.1、开发字体 黑体(字体包导入成功后,下拉框没有黑体时,手动输入黑体也可以)
1.新建模版
receipt — New — Jasper Report — Blank A4(默认) — next — (取个名字)Finish
⚠️需要小票模板的,需要调整Page Format里的宽度和单位(Detail中右键点击就能召唤出Page Format这个选项)
2.布局可以参考百度理解一下,一般推荐用Detail就够了
在做一个模版时要观察产品提供的原型,总结一下需要多少个Detail(可以理解为板块)
1.基础信息可以暂定一个Detail。
如果出现一行内容显示过多,导致内容截断(只显示部分内容),
这一行需要单独创建一个Detail,保证会自动扩充显示。
2.出现表格内容时也需要暂定一个Detail。
如果有小计行类似的也是需要单独开个Detail的。
3.尾部信息一般情况只需要一个Detail。
总结:动态的内容需要单独一个Detail,固定的内容也需要一个Detail。
3.使用组件(右侧可以看到)
常用的几种:
Text Field 这个是用来展示动态内容的,对应【左侧Parameters】里的值
Static Text 这个是用来展示静态内容的
Image 展示图片
Line 分割线【需要用到线的地方就找它】
table 展示表格的
Rectangle 展示一个框
总结:根据业务需要灵活应用
4. Properties
用来设置内容,就像一个调配器(谁用谁知道)
右键点击任何内容,选中Show Properties开始欢快的人生
Appearance标签的设置参数:
1.Location 控制组件的位置(x轴、y轴)
2.Size 控制组件的宽度(w)和高度 (y)
3.Color 勾选 Transparent 控制是否为透明
4.Style and Print Details 一般勾选如图所示,表示允许打印重复的值
5.Print When 勾选 Detail Overflows 控制内容溢出、Print When Expression** 相当于增加一个if()条件
Borders标签的设置参数(顾名思义主要控制边框有无粗细的显示):
1.Borders(默认不显示边框)
(1)Pen Color 控制颜色(肯定是黑色的)
(2)Pen Style 控制边框、线的样式
(3)Pen Width 控制边框、线的粗细(0.4~0.6)
(4)Default borders styles 控制显示四个方向的边框(当然图中红框位置也可以点击自定义选择)
Text Field标签的设置参数:
1.Expression 参考(5.填充参数)
2.Blank When NULL、Stretch With Overflow 控制不显示null、内容可以折行
3.Left/Right Indent 类似css中的边距
5.填充参数
左侧 选中Parameters 右键 — Create Parameter — 参数名对应java模版实体类的参数名(注意大小写)
创建参数时注意参数类型,
1.字符串类型的选择String
2.数字类型的选择BigDecimal
3.List类型的粘贴 net.sf.jasperreports.engine.data.JRMapCollectionDataSource
6.table
1.拖动table组件到Detail,创建表格
一路next — Finish 或直接Finish
如果要配置表格的样式,需要仔细next(有样式设置选项)
2.对【左侧Parameters】中的List类型数据进行关联
点击Dataset标签,选择一个承接的Dataset Run(一般表格创建后左侧会自动出现一个Empty Dataset)
点开树形列表,选中【Fields右键】 — Create Field 创建参数名,对应List里面的参数名(序号这一列最好在java这边处理)
选中 Use a JRDatasource expression 项 点击右侧 选择Parameters中的List类型的参数进行关联。
7.工具包(实用的一些功能)
a.标题(模版中拼接最方便)
例如:$P{title}!=null?$P{title}+”xxx打印单”:””
b.小数保留2位小数或多位
例如:$F{subtotal}.setScale( 2, BigDecimal.ROUND_DOWN )
c.字符串取第一个值
例如:$F{number}.toString().split(“\.”)[0]
d.判断List的大小
例如:$P{serviceDetailVOList}.getRecordCount()>0
c.表格嵌套表格请参考智能检测单模版
相关推荐——Jaspersoft Studio报表设计====传送门