一、概述 JasperReport是JasperSoft公司的一款开源的报表解决方案。其强大的功能及免费的特性得到了广大的认可和赞誉,通过JasperReport,用户就可以方便的定制、设计、生成项目所需要的各种报表。现在的最新版本是Jasperreport1.3.4。
下载地址是https://sourceforge.net/projects/jasperreports/。
iReport是jasperreport的一个IDE的开发工具,使Jasperreport变得更易用,其最新版本是iReport2.0支持Jasperreport1.3.4
下载地址是https://sourceforge.net/projects/ireport/。
二、环境配置
1. 正确安装配置jdk
2 .配置ant 。将ant放到c:\下(我用的ant路径是C:\Borland\JBuilder2005\thirdparty\apache-ant-1.6.5)
3 .将ireport放到C:\iReport-2.0.0
4 .将jasperreports-1[1].3.4.jar放置到C:\iReport-2.0.0\lib 中,jasperreports是iReport的核心内容,jsperreport是一个报表制作程序,用它的规则制定一个xml文件,然后编译生成一个.jsper文件,这个.jsper文件是我们真正使用的。
5. 将itext-1.3.1.jar、ojdbc14.jar、iTextAsian.jar、jcommon-1.0.0-rc1.jar JCommon、 jfreechart-1.0.0-rc1.jar jfreechart、poi-2.0-final-20040126.jar放置到C:\iReport-2.0.0\lib 下 。itext-1.3.1.jar iText是一个开放源码的Java类库,是用来生成PDF文件的。如果要在生成的pdf文件显示中文等亚洲字符,还必须下载itext的亚洲字符包iTextAsian.jar
下载地址:http://itextdocs.lowagie.com/downloads/iTextAsian.jar
jfreechart-1.0.0-rc1.jar jfreechart是一款免费的、功能强大的统计图生成工具,可以直接生成PNG,JPG等各式的文件。
下载地址:http://www.jfree.org/jfreechart/
jcommon-1.0.0-rc1.jar JCommon是一组有用的classes集合.它已经用在JFreeChart,JFreeReport与其它项目上. 这个类库包含了以下功能: 文本工具类(text utilities), 用来显示关于应用程序信息的用户界面类, 布局定制管理器, 一个日期选择面板, 序列化工具类, XML解析器支持类.
下载地址:http://www.jfree.org/jcommon/
poi-2.0-final-20040126.jar Apache的Jakata项目的POI子项目,目标是处理ole2对象。目前比较成熟的是HSSF接口,处理MS Excel(97-2002)对象。它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西,而是真正的Excel对象,你可以控制一些属性如sheet,cell等等。直接调用poi包的不是ireport,而是jasperreport。
下载地址:http://www.apache.org/dyn/closer.cgi/jakarta/poi/
二、使用介绍
1 启动:点击ireport\ireport.bat启动
2 修改语言环境:option-----选项-----general中language中更改-中文(中国)
3 创建报表 开启新档 输入名字-ok Portrait是纵向,Landscape是横向。
4 连接数据源 Data-连接/资料来源-new-connections porperties- 输入名字-选择jdbc Driver,jdbc url-输入username和password,-test测试通过表明数据源连接正确-save保存 (注意:必须保证数据库驱动ojdbc14.jar在lib目录下)
5 基本域说明
title域用来放报表的总标题
pageHeaher域顾名思义页头
columnHeader域是用来放static text的,也就是不循环的部分。
detail域是用来放text field的,也就是循环部分。
pageFooter域是用来放本页的统计参数的。
summary域是用来放整个表的统计参数的。
可以直接调整每个域的长度,也可以通过Band properties来调整 (在我的项目中,只设置的title和detail,在title中显示报表的总标题和所有parameters字段,在detail中显示需要循环的列表字段)
6 在报表中添加字段static text edit-insert element -static text 鼠标拖拉添加在页面中双击或者右键properties在static text Tab 中输入字段名字,为了以PDF格式输出中文,需要在“PDF Font Name”选项中选择“STSong-Light”,在中文字体定义中勾选“Default”、“PDF Embedded”,“PDF Encoding”选择“UniGB-UCS2-H (Chinese Simplified)”。 border 中可以设置表格边线样式,表格边线样式最好设为thin,这样就不至天太粗,而且pdf和excel两种格式兼容。
7 在报表中添加字段text field edit-insert element -text field 鼠标拖拉添加在页面中双击或者右键properties在text field 中输入字段名字, 样式如同$F{text_field_name},
f表示为field变量,是数据库中抽取出来的,你想在报表中显示的数据库内容,
p为parameter参数,是应用需要提供给报表的入口,比如想在报表被解释的时候提供where语句的条件值, 就可以用$P(parameterName)比如: select * from bugs where proname=$P{projectName} order by proname,modulename
v为变量(显示字体颜色为绿色,表示格式正确) border 中可以设置表格边线样式
8 调整报表布局鼠标拖动各个字段,拼接想要的报表布局,如果鼠标点击字段, 显示为红色,说明该字段跨越了两个域显示为绿色,说明两个字段叠加显示为蓝色,说明该字段位置正确
9 报表添加SQL查询语句 资料来源->报表查询(datasource-report query) 在Report SQL query里填写SQl语句。如果语句正确,在下面的field里就会显示正常的表字段。 (可以从显示的所有字段中选取想用做field的字段,点击ok后,自动添加为field动态字段)
10 为报表添加动态字段预览->报表字段(view-Fields) 新建一个字段,字段名字必须和报表中Fields中添加名字一直,同时必须是sql结果集中存在的. (把fields里的字段直接拖到报表上也行)
11 为SQL语句添加参数 预览->报表参数(view-parameters) 在parameters里新增一个参数 paratemeter name 是参数名,在SQL语句里写成"$P{参数名}" paratemeter class type里选择参数类型。 注意:如果是int型的数据,最好在报表字段里将该字段的Class type改成java.lang.String型的。
12 添加报表变量 预览->报表变量 $V{变量名}
13 处理字体 选中字段->右键->properties->font(双击也可以) Report font 选择全局的字体(仅限于该报表) Font name 选择在ireport里面显示的字体 Pdf font name 选择在pdf里面显示的字体 Rotation 选择内容是否旋转(很有用的选项) PDF Encoding 中文要用UniGB-UCS2-H,外部字体要选Identity-H
14 设定该报表的全局字体 预览->报表字型(view-font)
15 编译jrxml 建立->编译 (build-compile) 编译后生成一个后缀名为jasper的binary文件,可以直接给程序调用。
界面设计,在软件行业重要、也是绝对离不开的东西,界面设计方面一直就是软件设计中最薄弱的环节,如果从软件设计的层面去看界面设计,N多的设计师都会看到其中犯的N多设计错误的基本常识,可以去想想为什么每次系统改界面总会是件那么痛苦的事,很多时候都是因为在项目/产品中缺乏专业的界面设计师而造成的。
何谓界面设计师,这里不是说美工,而是指根据项目的业务需求分析形成的总的界面设计方案,需要具备能够根据需求形成界面,这个界面需要具备足够的元素,同时,界面设计师还有一个比较重要的工作是能完成界面和业务逻辑的交互的设计,界面设计师除了需要具备这些能力之外,还有一个非常重要的,那就是对界面元素的共性的抽象能力,如果我们的软件具备了这样的设计,那么界面的修改也许不会成为一件什么痛苦的事,界面设计师需要具备的抽象能力的知识和软件设计师的抽象能力的知识体系是不同的,所以界面设计师这样的角色是在日益重视界面和交互的时代中特别需要的。
界面设计师,现在好象还真不多,不过现在的软件公司也没多少会专门设置这样的职位,希望能随着软件业的不断发展,能对这方面越来越重视!