IReport与JasperReport开发详解二

 
IReport JasperReport 开发详解二
        3.2.1   设计报表
                 现在请点击菜单 "DataSource" 然后选取中 "Report query" 项,也可以点击图标 , 接着 IReport 会弹出一个对话框 ( 如图 )
现在我们在 "Report SQL Query" 中输入 SQL 语句 "select * from titles", 然后去掉 "Automatically Retrieve Fields" 前面的钩 , 再点击 "Read Fields" 将表中的数据字段读出来如图
点击 "OK" 返回主界面。现在该设计报表的内容了,请点击菜单 "View" 下的 "Report Fields" 项,也可以点击工具栏上的图标 ,然后你将会得到表中所有的字段名如图:
你可以选择你想要的列,以拖动的方式,将先中的列拖到报表中,这样 IReport 就会自动的将你所拖动的列进行绑定 ( 可别告诉我你不会拖动这个动作,呵呵 ) ,在这里我们只作简单的演式,就不拖动太多的列到报表中,我们只选取取 "title_id pubdate,title" 三列就可以了。当然你如果不想用这种简单的方法,要手工添加那也没办法,同样也可以你可以点击工具栏上的图标 ,这时你的光标就会变为 一个十形,你可以在报表的任意位置画一个 文本框出来,因为你在报表中画的是一个动态的文本列,这时你得设置它的属性,你可以双击你刚才画的文本框,也可以对着你所画的文本框点击右键,选 "Properties" 。来设置它的属性。如图:
在默认情况下打开属性窗口后会自动的转到 "Text Field" 选项卡上,这时你得设置一个与数据库相对应的数据类型, 这个不能出错,否则会在你编译或生成报表时出错 ( 未作测试,不能确定会在那一步出现错误 ) ,还有一个我们必须关注的是 "TextField expression", 在它的输入框中默认为 "$F{field}" 这时你须要将大括号中的 "Field" 为你表中要指定的列名。如果你要问 "$F" 代表什么,那你就看下面的这个表就应该知道了。设置好这两个后就可以绑定一个列的数据了。 不过你必须将它放在 "detail" 区中,否则你在运行报表时可能只能显示一条记录到报表中。为什么这就不用解译了吧!整个报表的空页面 IReport 已为你划分好了数据摆放的位置,比如 :"title,pageHeader,columnHeader" 等等。
元素
名称
引用
变量
variablesName
$V{ variablesName }
参数
parameterName
$P{ parameterName }
字段
filedsName
$F{ filedsName }
         现在运行报表总觉得有点单调 , 我们可以为报表设置一些标题之类的信息,在工具栏中找到 , 点击它然后在 "Title” 区画一个文本框,双击它或点右键选 "Properties" 这时出现一个静态文本框的属性窗口,选中 "Static Text“ 选项卡,输入 测试报表 ,可以在 "Font" 选项卡中选择你希望看到的字体和字号,如图
在这里你也可以不用输入,也可以从数据库中取数据来填充它,具全在 "common" 选项卡,点击后,你会看到 "Print When expression" 在它的输入框中输入你所想要的列名,具体操作如上,也要以从右边的三尖角图标 进去,有四个类型 "Fields,Parameters,Variables,Formulas" 这里只介绍前两种, "Fields" 在前面已经说过了,具体操作是一样的,就不再细说,第二种 "Parameter" 这个参数一般不在 IReport 中使用,后面再讲。然后按照设置 "title" 的方式来设置 "ColumnName“ ,做好后你所看到的中文显示不出来,或乱码,怎么办呢?你可以见页底的 FAQ , 现在一个最基本的报表可以认为已经做好了,但是还得调整它的位置,以及上下的边界线,要不然数据显示到页面时会非常的零散。
    现在保存,记得最好保存为与你新建报表时的名字一样。理由: 因为在使用文件流来读取报表,然后编译时会出现错误。保存完后点击工具栏上的图标 进行编译,在工具栏上有两个图标一个是执行静态报表用的 ,而另一个是用来填充动态报表的 , 现在我们只能用动态报表执行的按钮,来填充报表,用前者来执行的话除了你的静态文本之外,其它的显示 null IReport 在默认情况下为 "JRViewer Preview" , 生成后的效果为:
         你也可以在 "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

 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值