天天看点

牛刀小试iReport

完整版见https://jadyer.github.io/

新建报表:菜单栏的File---New Document--Reprot Name中设定报表名--OK

编译报表:菜单栏的Build--Compile

运行报表:菜单栏的Build--Execute

iReport的国际化

启动iReport之后,有时候它的窗口菜单栏呈现的是繁体汉字

这是由于其国际化没有做好,我们可以修改iReport,使其显示英文或简体中文

Options--选项--General--语言--选择英文即可

若想显示中文的话,那么选择第3个中文(中国)即可

添加静态文本

点击上方工具栏中的Static Text按钮,然后在报表中拖动出一个矩形框即可

点中报表里的Statci Text框,右键选择Properties可以详细的编辑静态文本

预览报表的底层实现所应用的技术

选择完预览方式之后,在预览时,实际上都是由相应的组件来帮助我们完成的

比如转换PDF格式,它使用的是iText组件,这是一个很有名的使用Java操纵PDF的工具

比如转换Office格式,它是使用Apache--POI组件来转化的

预览报表

iReport支持多种方式的预览,也就是说它可以转化为多种格式

我们预览时所看到的就是以最终呈现出来的报表的方式进行查看的

它默认的为JRViewer Preview预览,我们也可以选择其它的预览方式

编辑报表之后,需要先Compile报表,然后再Execute报表

另外,其中的Java 2D Preview预览是非常炫的,预览时可以实现鼠标翻书的效果

通过报表向导新建报表

File--Report Wizard--接下来我们一一说明

             Query:在Connections/Data Sources中选择定义好的数据源

                           在SQL query输入SQL语句,比如select * from person

Fields selection:左框会自动呈现表字段,右框就是用来指定显示在报表里面的字段

      Group by...:指定按照哪个字段进行分组

             Layout:指定报表模板,比如说我们选择classicC.xml经典的模板

               Finish:此时会弹出compatibility warning兼容警告框,无需理会,直接点击确定即可

按照预览方式关联到程序

运行报表时会在下方Output Console中输出提示信息。如果提示如下信息的话

No external viewer is specified for this type of print.Set it in the Options pane.

指的是当前预览方式并没有关联到具体打开程序上,需要在选项面板中设置它

点击菜单栏的Options--Settings...--External Programs--配置打开方式

新建数据源

Data--Connections/Data Sources--New--Database JDBC connection

在//iReport-2.0.5//lib//中已经自动为我们提供了连接数据库需要用到的JAR包了

若要连接其它数据库,而恰巧//iReport-2.0.5//lib没有提供相应的数据库驱动的话

我们可以自己将该数据库驱动拷贝到//iReport-2.0.5//lib中,然后重启iReport即可

此时iReport会自动将数据库驱动,也就是把连接数据库用到的JAR包加载进来了

              Name:自定义数据源名字,比如mysql_connection

       JDBC URL:输入Database后,点击后面Wizard按钮,按项会自动添充

Server Address:数据库服务器地址,比如localhost

        Database:所连接的数据库名

     User Name:连接数据库的用户名

       Password:连接数据库的密码,我们可以点击下面的Test按钮测试连接

报表上的表达式

点中报表上$F{age}右键Properties--Text Field--Text Field Expression

在它的右侧的Open the expression editor按钮可以打开表达式编辑器

在Text Field Expression中显示的就是绿色的$F{age}

这里 F 指的就是数据库里面的字段, {} 中表示的就是字段名,不用加引号

表达式为绿色的则表示该信息是正确的,如果是蓝色的则表示该信息错误

PDF Preview的中文问题

若报表中含有中文,那么在以PDF Preview预览时,就可能会出现乱码或空白

这是由于iReport使用的是iText生成PDF的,而iText默认的是不支持中文的

所以要到http://itextpdf.sourceforge.net下载iText的支持亚洲文字的iTextAsian插件

然后把下载到的iTextAsian.jar拷贝到//iReport-2.0.5//lib中,再重启iReport

此时不要急着预览,还要修改一些参数,点中报表上含有中文的Static Text框

右键Properties--Font--将PDF Font Name改为STSong-Light字体

接着将最下方PDF Encoding改为UniGB-UCS2-H(Chinese Simplified)即可

并且这个弹出的Properties对话框,没有确定按钮,修改完参数后即立刻生效

另外:关于iText的学习,大家不用去买书,直接在网上搜些资料就可以了

此外:Manning出版社出版的《iText IN ACTION》的也是唯一的一本iText方面的书

定制$F{field}的显示

默认$F{field}会显示所有字段的值,我们也可以决定它显示某一个字段值

选中$F{field}右键Properties--Common--Print when expression框

可以在该框中输入一个返回布尔值的表达式,即返回true时,才打印字段值

比如说我们想让报表打印username的值不是zhangsan的所有人的名字

则可以输入new java.lang.Boolean(!"zhangsan".equals($F{username}))

真正开发时建立报表的方式

在真正开发中建立报表时,报表向导用的并不是很多

这是因为报表向导存在一些局限性,我们只能按照它的一些模板去定制报表

实际上报表是根据客户的要求去定制的,而模板通常是不符合要求的

所以,我们通常会从新建普通报表开始:选择File--New Document

普通报表的主窗体的Band释义

                 Title Band:仅仅显示在整个报表的第一页的最上面。类似于一本书的书名

                                     除第一页外的所有其它页面中都不会出现Title band中的内容

     pageHeader Band:显示在整个报表的所有页面的最上端。类似于Word的页眉

                                     但是在报表第一页中,它的内容将显示在Title Band的下面

      pageFooter Band:显示在所在页面的最下端。类似于Word的页脚

lastPageFooter Band:即尾页的页脚,仅仅显示在最后一页脚处

                                     此时最后一页将不再显示pageFooter band

               Detail Band:即报表内容段,在Detail Band中设计报表中需要重复出现的内容

                                     并且Detail band中的内容会显示在每一页中。类似于Word的正文

   columnHeader Band:针对Detail Band的表头段。一般在该段中画报表的表头

    columnFooter Band:针对Detail Band的表尾段

           Summary Band:表格的合计段。出现在整个报表最后一页的Detail band后面

                                       一般用来统计报表中某一个或某几个字段的合计值