IReport与JasperReport开发详解二
3.2.1 设计报表
现在请点击菜单"DataSource"然后选取中"Report query"项,也可以点击图标
![](/images/load.gif)
![](/images/load.gif)
现在我们在"Report SQL Query"中输入SQL语句"select * from titles",然后去掉"Automatically Retrieve Fields"前面的钩,再点击"Read Fields"将表中的数据字段读出来如图
![](/images/load.gif)
点击"OK"返回主界面。现在该设计报表的内容了,请点击菜单"View"下的"Report Fields"项,也可以点击工具栏上的图标
![](/images/load.gif)
![](/images/load.gif)
你可以选择你想要的列,以拖动的方式,将先中的列拖到报表中,这样IReport就会自动的将你所拖动的列进行绑定(可别告诉我你不会拖动这个动作,呵呵),在这里我们只作简单的演式,就不拖动太多的列到报表中,我们只选取取"title_id, pubdate,title"三列就可以了。当然你如果不想用这种简单的方法,要手工添加那也没办法,同样也可以你可以点击工具栏上的图标
![](/images/load.gif)
![](/images/load.gif)
在默认情况下打开属性窗口后会自动的转到"Text Field"选项卡上,这时你得设置一个与数据库相对应的数据类型, 这个不能出错,否则会在你编译或生成报表时出错(未作测试,不能确定会在那一步出现错误),还有一个我们必须关注的是"TextField expression",在它的输入框中默认为"$F{field}"这时你须要将大括号中的"Field"改 为你表中要指定的列名。如果你要问"$F"代表什么,那你就看下面的这个表就应该知道了。设置好这两个后就可以绑定一个列的数据了。 不过你必须将它放在"detail"区中,否则你在运行报表时可能只能显示一条记录到报表中。为什么这就不用解译了吧!整个报表的空页面 IReport已为你划分好了数据摆放的位置,比如:"title,pageHeader,columnHeader"等等。
元素
名称
引用
变量
variablesName
$V{ variablesName }
参数
parameterName
$P{ parameterName }
字段
filedsName
$F{ filedsName }
现在运行报表总觉得有点单调,我们可以为报表设置一些标题之类的信息,在工具栏中找到
![](/images/load.gif)
![](/images/load.gif)
在这里你也可以不用输入,也可以从数据库中取数据来填充它,具全在"common"选项卡,点击后,你会看到"Print When expression"在它的输入框中输入你所想要的列名,具体操作如上,也要以从右边的三尖角图标
![](/images/load.gif)
现在保存,记得最好保存为与你新建报表时的名字一样。理由:“因为在使用文件流来读取报表,然后编译时会出现错误。保存完后点击工具栏上的图标
![](/images/load.gif)
![](/images/load.gif)
![](/images/load.gif)
![](/images/load.gif)
你也可以在 "Build" 菜单中选择你想要得到的报表格式,如:PDF,XSL,CSV,HTML等...当你选择好后如果没有指定运行你指定生成报表的运行程序的话,它默认会保存到IReport的当前目录中,不会是在你保存报表所在目录。如果你不喜欢看英文界面的话,你可以在菜单"Tools"下的"Options..."可以设置语言,报表的保存位置,备份位置,运行报表所用的程序等等... ...
未完待续
FAQ
1.生成报表时中文产生乱码?
JasperReport的中文处理,须要一个亚洲语言包" iTextAsian.jar,"话到IReport下的lib目录中;然后修改报表的"PDF Font Name"将其改为"STSong-Light",再则是修改"PDF Embedded PDF Encoding" 将其改为"UniGB-UCS2-H(Chinese Simplified)" ,这样就可以解决JasperReport的中文问题了(针对PDF设置的,对Excel也许要少一些,不过这样设置同样也能显示为中文,是不爱引响的)。
2.报表编译时产生NoClassDefFoundException异常?
在代码处理JasperReport时出现该异常,是因为在引用JasperReport的一些jar文件不完整,因工作忙我的处理方式是将JasperReport目录下的Demo\sample\webapp\WEB-INF\lib\所有的jar文件,全引用了,以防不测,同时也没有时间去过多的深究。一定会有一些不必要的包被引用了,如果你有时间可以看一下,再将不必要的jar去掉。
3.另存为PDF时出现UnisupportEncodingException异常?
在报表设计的过程中难免会有小错误,这是因为没有改变"PDF Font Name"应改为"STSong-Light".
下载相关:
IReport下载地址:http://ireport.sourceforge.net
JasperReport下载地址:http://jasperreports.sourceforge.net
iText亚洲语言包下载地址:http://www.lowagie.com/iText