1      开发工具

1.1  软件名称

名称:TIBCO Jaspersoft Studio

版本:6.0或以上,建议6.2.1

1.2  软件安装

免安装软件包,拷贝即可使用,建议放在D:盘或其它自己好找的目录。

拷贝好软件后,可为主程序创建一个快捷方式:

1.3  TIBCO Jaspersoft Studio界面说明

安装好后打开主界面,关掉欢迎页面,即可出现开发主界面,如下:

打开或设计报表时,为如下界面:

2      报表设计

2.1  工作空间设置

打开主菜单“File —> Switch WorkSpace”,选择你打算存放报表工程及报表设计文件的目录。

点击OK后,程序将自动关闭并重新启动。如果没有重启,请手工重新打开。

2.2  报表工程目录结构说明

重新打开界面后,系统会自动创建一个默认的报表工程:

此时,在你工作空间所在目录会生成如下文件夹:

在MyReports目录里创建3个目录:

l  JSON:用于后期存放在设计报表格式时用到的样例数据文件

l  DataAdapter:用于存放设计报表需要定义的数据源

l  Print:报表设计文件(*.jrxml)及编译好的报表格式文件(*.jasper)

2.3  生成JSON数据文件

l  用浏览器打开猿猿企业管理系统(这里以谷歌浏览器为例进行说明),登录后打开需要设计打印格式的功能界面(如采购订单),打开(或新建)一张有多行商品数据的单据。

l  按下F12,打开调试界面,在单号位置输入单号回车,如下图。

按图中的步骤,找到JSON数据,并将其全部复制出来(也许是第一个action,也可能是最后一个,更有可能是几个合起来(,"SER_FWDFASP":[{"YH)。

l  可在浏览器中打开JSON解析工具对JSON字符串进行格式化。解析工具地址:http://www.bejson.com/jsonview2

l  将刚才格式化好的JSON字符串复制粘贴到新建的文件中,并进行编辑:

n  将前5(7)行替换为【{"PUR_CGDD":】

n  后4行替换为 【}】

n  替换完毕后,能在试图中看到以下结构则表示格式正确,可以继续后续操作:

n  

l  切换到报表设计工具,在报表工程的JSON目录创建一个JSON文件:
在JSON目录点鼠标右键àNew/Fileà输入文件名PUR_CGDD1.json-->Finish

l  将刚才编辑好的JSON字符串全选,拷贝到新文件中。

l  样例数据到此准备就绪。

2.4  创建数据源(Data Adapter)

在工程的DataAdapter目录点右键àNewàData Adapter,打开如下界面:

点Next:

选择JSON File,点Next:

输入数据源名称;

File/Url位置选中刚才建好的json文件名;

选择Use the report JSON expression when filling the report。

点击Finish。

测试一下,成功则进入下一步。

2.5  创建主报表

在Print目录(或其子目录)点右键àNew/Jasper Report,打开如下界面:

Next:

输入打印报表名称PUR_CGDD1.jrxml,Next:

选择刚才建好的数据源,在下面的列表里选中主节点“PUR_CGDD”,Next

可用字段全选,Finish。(主报表不需要设置分组字段Group by)

界面上出现了一个待设计的空打印模版。

上面有若干个栏位,删除其他栏位,保留Page Header、Detail 1、Page footer,并适当拉宽3者的高度,以方便放置内容。

2.6  设置打印纸张

在下图方框区域点右键àPage Format…,调出纸张设置对话框:

按纸张实际大小进行设置,注意将所有单位设置成mm(毫米)。

2.7  放置打印内容

2.7.1  静态文本

在右上方组件区域找到【Static Text】,鼠标选中后,在页面空白处点击一下或者拖放到页面,即可增加一个静态文本组件。

双击该组件可对需要显示的文本内容进行编辑。通过工具栏的相关按钮可对字体、文本对齐方式、组件对齐方式进行调整。

2.7.2  单据字段

在屏幕左下方的组件列表中找到Fields列表,将需要的字段拖放到报表上。当拖放到Detail 1区域时,系统会生成一个静态标签和一个字段值标签,拖放到其他位置时只有字段值标签。

将组件进行相应编辑,并拖放到PageHeader的相应区域。

继续添加完其它字段内容,预览如下:

2.7.3  条码

条码在拖放到报表上时,会要求选择条码格式,请按公司扫码设备要求进行选定。选定后,在右下方的组件属性栏选择“AdvancedàCode Expression”,弹框选择对应的字段即可。

2.7.4  合计字段配置 ?

在界面右下方的报表元素列表Variables栏增加一个Variable;

在右边的属性中做如下设置:

报表元素

取值必须修改为Double类型,不然无法相加数据,Double才正常

最后把这个Variable拖拽到ColumnFooter区域。

2.7.5  数量金额格式设置

选中相应的数量、金额字段后,在属性页面找到属性”TextField Properties/Pattern”,点后面的按钮调出格式设置对话框进行设置即可。

2.8  创建子报表(多个query.action时,子表需关联新的json)

在右上方将Subreport拖入Detail 1,弹出如下界面:

选择Create anew report,Next,默认纸张,输入子报表的文件名:

然后选择数据源:

Next,与主报表一样选择所有字段,再Next,选择Group by 字段(CKKQID):(只有需要按某字段分组时才选此项,否则直接Next)

Next,选择子报表获取数据表达式:

按下列表达式填入文本框,其中最后的双引号中是子表对应的JSON节点名称。(填入软件)-改expression为主目录"PUR_CGDDMX.J"

((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("PUR_CGDDMX")

点击Finish,生成子报表,子报表只保留“Column Header、Detail 1、Column Fooder”三个区域。

然后将商品明细需要展示的字段拖到Detail 1区域,并排版。

((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("CRM_VIPCLXX")

CRM_VIPCLXX取值另外一个aciton的CRM_VIPCLXX

跨表取值必须建立子报表

subDataSource取值

2.9  分组设置

首先,在子报表创建时,在Group by页面选择要分组的字段(采购订单上为:CKKQID);

在子报表设计页面左下方的CKKQID Group Header,点右键Add Header Band;

将CKKQID、CKKQMC等字段配置到新增加的Group Header Band区域。

所有设置完毕后,预览效果,如下:

分组增加代码:1、  <sortFieldname="FABHMC" order="Descending"/>

(order=“Descending”表示倒序排列)

2、分组重新开页

2、<groupname="FABHMC"isStartNewPage="true">

<groupExpression><![CDATA[$F{FABHMC}]]></groupExpression>

</group>

3、合计按分组打印

3      报表文件的配置与发布

l  报表文件设计好后,经过编译(BuildALL),可在报表目录生成*.jsper文件。

l  将两个*.jsper文件拷贝出来,放在Tomcat/bin/resources/print目录下与该功能界面jsp相同的子目录中。

l  并在界面配置表中按钮定义表里打印按钮的AURL字段设置为对应的主报表文件名称。

l  报表格式即发布成功。

编辑窗口:

1、  显示不了中文:

Ⅰ编码转换

Source添加如下内容:

<propertyname="com.jaspersoft.studio.data.defaultdataadapter"value="OneEmpty Record"/>

<propertyname="com.jaspersoft.studio.unit."value="mm"/>

<propertyname="com.jaspersoft.studio.unit.pageHeight"value="mm"/>

<propertyname="com.jaspersoft.studio.unit.pageWidth"value="mm"/>

<propertyname="com.jaspersoft.studio.unit.topMargin"value="mm"/>

<propertyname="com.jaspersoft.studio.unit.bottomMargin"value="mm"/>

<propertyname="com.jaspersoft.studio.unit.leftMargin"value="mm"/>

<propertyname="com.jaspersoft.studio.unit.rightMargin"value="mm"/>

<propertyname="com.jaspersoft.studio.unit.columnWidth"value="mm"/>

<propertyname="com.jaspersoft.studio.unit.columnSpacing"value="mm"/>

<stylename="myStyle"isDefault="true"pdfFontName="STSong-Light"pdfEncoding="UniGB-UCS2-H"isPdfEmbedded="true"/>

II时间格式转换:newSimpleDateFormat("yyyy-MM-dd HH : mm : ss").format(newjava.util.Date(Long.parseLong($F{SHRQ_SJ})))

III空值改成不显示

IX打印分组:

1、  对BXBJ进行分组

2、  将BXBJ字段复制到新增分组

X.将数字进行文字判断转换(待研究):

IF ($F{BXBJ}=="0","选修","必修")

XI.将分页改为按分组计算:

4      问题总结

4.1  日期显示问题

描述1:jaspersoft 上显示的是日期时间,在网页上为秒数

解决:网页json转jaspersoft时会成为日期时间的,所以要加上日期函数

描述2:有日期函数的可以为空。

解决:运用三元运算符做判断,jaspersoft不能用if…else;有日期函数时,为空会报错。

$F{YQJCSJ}.equals("0")?"无":newSimpleDateFormat("yyyy-MM-dd").format(new java.util.Date(Long.parseLong($F{YQJCSJ})))

描述3:在网页json上加上了相应的字段,但是在网页上还是显示不出来。

解决:单单在网页json上添加是不能显示的,还需在数据库相应的表上添加相应的字段;

4.2  其它

用double和INT刚好取值0有问题

用java.math.BigDecimal这个方法避免

4.3  模板三目运算判断

连续的三目判断:

表达式:

($F{ZCZT}.equals("1")) ? "在库" : (($F{ZCZT}.equals("2"))? "在用" : (($F{ZCZT}.equals("3"))? "闲置" : (($F{ZCZT}.equals("4"))? "维修" : (($F{ZCZT}.equals("5"))? "借出" : (($F{ZCZT}.equals("6"))? "报废" : (($F{ZCZT}.equals("7"))? "调拨售出" : (($F{ZCZT}.equals("8"))? "盘亏待处理" : ($F{ZCZT}.equals("9"))? "盘亏" : "Cancelled")))))))

如:

Jaspersoft Studio报表设计的更多相关文章

  1. TIBCO Jaspersoft Studio 报表软件使用教程

    Detail 1里面放置动态内容框可以循环遍历数据 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn ...

  2. Java开源报表Jasper入门(2) -- 使用JasperSoft Studio创建一个简单报表

    在接下来的教程中,我们将实现一个简单的JasperReports示例,展现其基本的开发.使用流程.文章很长,不过是以图片居多,文字并不多. 实例中使用最新的Jasper Studio5.2进行报表设计 ...

  3. 1.报表TIBCO Jaspersoft Studio工具教程入门--生成jrxml和jasper文件 然后拖拽到项目中 跟ireport一样

    转自:https://blog.csdn.net/KingSea168/article/details/42553781 2. 在接下来的教程中,我们将实现一个简单的JasperReports示例,展 ...

  4. jasperReport Studio java报表设计(详细)

    一.环境搭建 在spring-mvc.xml加入 <!-- jasperReports--><import resource="classpath*:spring-mvc- ...

  5. 从iReport至Jaspersoft Studio

    这篇文章同步到http://www.waylau.com/from-ireport-to-jaspersoft-studio/ 从5.5版本号開始,Jaspersoft Studio将代替iRepor ...

  6. jaspersoft studio 的初级入门(一)

    前言 最近的工作涉及到企业的报表生成功能,于是就想用此篇博客来记录我的学习历程.进入Jasperreport项目的官网发现有一个软件叫Jaspersoft studio的,它的版本也是6.3.1跟Ja ...

  7. ActiveReports报表控件 V13 正式发布,提供在线报表设计和自适应报表布局

    重磅消息, ActiveReports V13 正式发布!本次更新 ActiveReports 将给您带来全新的报表设计体验:提供在线报表设计器.提供响应式布局和屏幕尺寸自适应能力.提供全新的图表…… ...

  8. Jaspersoft Studio简介

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

  9. 加快FineReport报表设计的几个心得体会

    加快FineReport报表设计的几个心得体会 一.从远程服务器大批量取数进行表样设计时,最好按“列顺序”取一个“空的SQL语句”,这样可提高设计速度.否则每次设计时模板均要从远程读取数据,速度相当慢 ...

随机推荐

  1. [译] 使用 Espresso 隔离测试视图

    原文地址:Testing Views in Isolation with Espresso 原文作者:Ataul Munim 译文出自:掘金翻译计划 译者:yazhi1992 校对者:lovexiao ...

  2. JavaScript内置可用类型

    string,number,boolean,null和undefined,object,symbol(ES6新语法)

  3. webapplicationContext之ServletContext等相关概念说明

    1)ServletContext是一个全局的储存信息的空间,所有用户共用一个,其信息必须是线程安全且共享的. ServletContext有一个接口定义:ServletContext接口.此接口定义了 ...

  4. 第6章 未来的函数:生成器和promise

    目录 1. 生成器函数 1.1 定义生成器函数 1.2 迭代器对象 1.3 对迭代器进行迭代 1.4 把执行权交给下一个生成器 2. 使用生成器 2.1 用生成器生成ID 2.2 用迭代器遍历DOM树 ...

  5. 如何制作sitemaps网站地图

    如何制作sitemaps网站地图 1.0 前言 1.1 xml格式 1.2 常见问题 本文资料来源于网站 1.0 前言 Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页.最简 ...

  6. Linux下Hadoop2.7.3集群环境的搭建

    Linux下Hadoop2.7.3集群环境的搭建 本文旨在提供最基本的,可以用于在生产环境进行Hadoop.HDFS分布式环境的搭建,对自己是个总结和整理,也能方便新人学习使用. 基础环境 JDK的安 ...

  7. 【Git】命令行操作

    Git 命令行操作 1 本地库初始化 git init:初始化本地仓库 效果 注意:.git目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡乱修改. 2 设置签名 形式: 用户名:tom E ...

  8. Laya 踩坑日记-BitmapFont 不显示空格

    项目中有用到艺术字,美术通过 bmfont64 将字体导给我了,结果发现在应用上 空格不显示 如图: 今天去深究了一下这个问题,发现是底层没封装好,然后自己改了一下下面是改过的 BitmapFont ...

  9. 【Java基础】网络编程

    网络编程 网络编程概述 网络编程的目的:直接或简洁地通过网络协议与其他计算机实现数据交换,进行通讯. 网络编程的两个主要问题: 如果准确地定位网络上一台或多台主机,并定位主机上的特定应用: 找到主机后 ...

  10. 【Flutter】容器类组件之填充

    前言 Padding可以给其子节点添加填充(留白). 接口描述 class EdgeInsets extends EdgeInsetsGeometry { // 分别指定四个方向的填充 const E ...