关于属性这里有非常重要的一点就是要设置报表字体和编码,将属性面板滑动到底部可以看到这两个属性:
如上图,因为我们的标题是中文,所以我们必须设置为中文字体和编码:
STSong-Light
UniGB-UCS2-H (Chinese Simplified)
只有这样我们在报表中才能正确显示中文,包括后面所有包含中文的控件都需要此设置。
Page Header标题很简单,接下来是页头,我们可以在页头放一些通用属性,诸如:学校、班级信息等等,如下图所示:
我们在页头(Page Header)中放了学校、班级和时间,可以看到我们用了6个控件,3个Static Text和3个Text Filed,就像之前说的,Static Text用来放静态文本,而Text Filed用来放动态表达式,学校和班级是我们在DB中查出来的(后面再细说),而时间这里用了一个动态表达式来完成,如下图:
关于Expressions(表达式)是一个值得深入研究的话题,iReport为我们提供了多种类型的表达式,例如:
这里看到了我们非常熟悉的Java代码,Java语言也正是iReport官方推荐的第一语言(尽管还支持Groovy、Javascript语言的表达式):
iReport为我们提供了丰富的表达式语法,上图可以看到甚至包括三目表达式,可以让我们方便的进行相关操作,比如下面的设置指定格式时间并输出:
这样我们就可以把当前时间按照指定的格式显示在报表中了。
Column Header看完了Page Header,接下来就是Column Header了,这个区域通常会放列头,所以也应当是静态文本,这个报表的表格我没有用table控件去做,而是通过多个Static Text和Text Field拼成的表格,如下图所示:
ireport自带的拖动对齐线可以方便的让我们将控件拖拽至合适的位置,包括调整它们的大小,当然也可以通过Ctrl+鼠标左键选中多个控件来为它们设置一致的属性值,关于Static Text或Text Field的边框(border)需要注意一下,因为在属性面板中并不能找到它们,我们需要选中控件然后点击鼠标右键在弹出的“Padding and Borders”中来设置边框,如下图所示:
我们依次点击Borders中的4条边,然后将Line width设置为1即可,现在我们就可以看到边框了:
到此为止我们的报表中所有静态的内容基本算是完成了,接下来就是主要的动态生成的部分了,由于项目的持久层采用的是MyBatis框架,所以在这里我们选用SQL作为Query language。首先需要确认数据源,最开始已经提到了DB数据源设置的位置,点击这个图标:
之后我们会看见如下窗口:
可以看到上图就是用来创建数据源的面板,前两个是ireport提前创建好的一个空数据源和一个Sample数据源,第3个是我已经创建好的,我在这里重新再创建一个新的数据源,点击New:
可以看到上图中提供了非常丰富的数据源类型,诸如:JDBC、Hibernate、EJB等等,由于我的项目中的持久层用的是MyBatis框架,所以在这里选择第一个——Database JDBC connection即可,然后点击next: