iReport 帮助文档


Open Doc iReport 帮助文档 (pektao2008@gmail.com) 第一部分 功能介绍: 1. 报表结构 一个报表的结构大致是几个部分: title、pageHeader、columnHeader、detial、columnFooter、pageFooter、summary、groupHeader、 groupfooter。 ·Title: 每个报表一般会有一个名字,比如×××销售报表,title 就是搁置这个名称的最好地方 了,当然你也可以根据需要搁置在合适的地方。 ·pageHeader: 报表的一些公共要素,比如页码、创建时间、创建人等信息放置在这里是比较好的选择。 ·columnHeader: 无可非议的这里是放置列的名称,记住不是列数据。 ·Detial: 放置需要循环的数据,比如销售记录数据。 ·columnFooter: 放置列级别的统计计算值或是列的说明。 ·pageFooter: 放置页级别的统计值或是页的说明。 ·Summary: 可能需要对几页(你的报表可能有几个页组成)的统计值。比如 50 个销售记录共占用 了 3 页,那么放置这些统计记录的统计值最好的地方就是 summary。 ·groupHeader: 每个表的内容可能需要根据某个属性进行划分显示内容和计算内容,比如希望以月份为 单位每组分开显示销售记录,那么就可以定义一个组(组的定义参考后文), groupHeader 就是放置组说明或是组标志最好的地方。 ·Groupfooter:放置组的统计或是说明 2. iReport 的输出格式 iReport 的预览输出格式可以支持以下几种: PDF、HTML、CSV、JAVA2D、Excel、纯文字、JRViewer,其中最常用的是 PDF、JRViewer。 JRViewer 是直接以 C/S 方式作为报表的输出格式,在 JFrame 框架下输出。Jasperreport 提供 默认的 JRViewer 输出类。 3. 报表的动态对象变量、参数、字段 报表上主要的元素为静态文本(static text)、变量(variable)、动态域(Field)、参数(Parameter)。 静态文本就是显示在报表上不变的文字。变量是指通过系统自带的计算得到的一些值(如当 前页、总记录数等)。动态域可以是连接数据库时所的的字段,也可以是通过自定义数据源(可 能是包含一组数据的实体类)。参数是程序运行时传到报表内部的变量,通常通过 Map 形式 传入,可作为显示变量或者用于 sql 语句中变化的条件。这些有关的内容,我们要介绍这些 对象的使用和意义: ·字段(Fields):是数据库抽取出来的,希望在报表中出现的数据库内容。比如一个 ID 的 所有值。$F{ filedsName }表示字段,是报表中最重要的部分。如果 JDBC 方式的连接,输 入 sql 查询语句就可得到所有查询所得到的字段;如果是 Custom Datasource 方式,新建一字 段,例如 user_id。数据类中 getFieldValue(JRField field),field 就是报表中的$F{Field_name}。 程序中根据 JRField 对象的 name 属性来确定返回哪个值 ·参数(Parameters):这是你的应用需要提供给报表的入口,比如你希望在报表被解释的时 候提供 Where 语句的条件值,那么就可以使用参数(Parameters)。$P{ parameterName } 代表参数,{}内是参数的名称,在报表中设定后,在运行的时候通过从外部传入的参数来动 态生成标题等数据,并且可以作为查询条件传入 sql 语句使用(如果是使用 JDBC 直接连接数 据库的话) ·变量(Variables):这是报表中一些逻辑运算的表现,比如统计值。$V{ variablesName } 每种对象的定义格式如每个对象的后面说明,比如定义一个变量(Variables),那么表达式 就写成$V{ variablesName },报表中出现的就是这个变量的名称。后文会详细的介绍使用方 法。 $V{PAGE_NUMBER} 代表当前页数,$V 代表 variable ,对现有的 group , $V{groupname_COUNT}代表当前组的记录数 //代表返回当前行的第四个字段 if("user_id".equals(field.getName()))return data[index][3]; 4. 编译、静态运行、动态运行 Jasperreport 运行时需要的就是一个 jasper 后缀的文件,编译过程其实就是把 jrxml 后缀的文 件生成 jasper 后缀的文件。(可以参考 Jasperreport 的运行原理) 静态运行和动态运行是相对的,后者带数据源运行,比如带数据库运行。前者就是静态文本 运行,和数据源无关,如果报表中出现和数据源有关的对象,则以 null 显示。 5. 几种 Datasource 的方法 a) JDBC连接数据库。新建一个连接,选择类型为 Database JDBC connection,给这个 连接一个名字,填写 driver,数据库连接的 url,数据库用户名密码等信息后,测试通过即可 建立连接。 b) Customer JRDatasource 取得数据。首先写一个包含数据的类,它实现了 JRDatasource 接口,实现 next()和 getFieldValue(JRFeild field)两个方法。Next 方法用于取得下一条记录, getFieldValue 方法则根据 jasper 文件中定义的 field 的名称来取得对应列的数据。另外,为了 在 ireport 中能预览效果,我们还需要构造取得该数据源类的方法,通常命名为 XXXDatasourceFactory 类,它提供了 getTheDatasource 类取得数据源类这个对象。在连接时, 填上工厂类和取得数据源类的对应方法后即可得到数据。 然后在菜单上的 build->set active connection 选择连接,在 datasource->report query 里输入 sql 语句或 javabean 方式得到数据域。得到的数据域按名存放在 Fields 里,可拖拽到页面报表上。 第二部分 使用步骤: 1. 新建报表 选择工具栏上开启新档,设置基本信息,包括名称,打印纸大小,打印方向(纵向或者是横 向),在 more 标签页选择 XML 编码方式,如果需要 XML 支持中文,那么 XML ENCODING 为 GB2312,还可选择总标题和总结为单独一页打印。 2. 使用连接 选择菜单【Data】-【 连结/资料来源】开启可选的动态连接,选择任何一个你需要的连接。 *【特别提示】此连接必须与以后应用程序使用的连接一致。 按照以下步骤实现: 新建连接: 连接 sqlserver 数据库,内容如图: 点击[Test] 测试连接是否成功 3. 创建 SQL 查询语句 SQL 语句是对任何 RDBMS 起作用的语言,外部用户需要使用这些语言管理维护数据库中 的数据,同样的,iReport 也是需要这么做,我们需要提供查询数据库的语言-SQL 语句, 这样,iReport 即可通过此 SQL 语句获取数据,之后组织到报表中并显示出来,以满足用户 的需要为目的。 通过菜单【编辑】-【报表查询】开启 SQL 输入对话框,并在【Report SQL Query】 Label 中输入 SQL 语句如图:图中的“Automatically Retrieve Fields”checkbox 和“ReadFields” Button 是确认自动获取还是手动获取数据库表的可用 Fields。单击【OK】,保存报表。 4. 添加静态对象 可以通过工具栏的工具添加静态对象,比如文本,点击【T】,之后在报表的空白处单击, 如此即可把静态对象添加到报表,然后拖动对象的边框,使它的大小合适,双击对象弹出对 象的属性配置对话框,切换到【Font】Label,在“Report font”的 ComBox 选择“表头”字 体,(表头字体是前文提供的自定义属性组合),再切换到【Static Text】Label,修改表头的 名字,比如“Bug 统计报表”或是“销售记录统计表”等等与业务有关的内容。添加图片, 请点击【Image Tool】,之后的操作与 Text 类似。其他静态对象操作步骤类似。 静态对象设置内容,如图: 静态对象设置颜色,如图: 静态对象设置字体,拖拽上述元素到报表页面上后,需要设定他们的字体 Font name 是用 ireport 预览时使用的字体,如果可能含有中文,那么必须选择一个中文字体,否则无法正常 显示。 PDF font name 内容必须选择 STSong-Light,在 PDF Embeded PDF Encoding 复选 框上打钩, PDF Encoding 并在下拉框中选择 UniGB-UCS2-H (Chinese Simplified)。这样输 出的 PDF 文件才能正常显示中文。如图: 注意:如果用 ireport 生成含中文的报表,则需要把 iTextAsian.jar 拷贝到 iReport 的 lib 文件 夹下。 在 TextField 标签页里选择文本域的类,重新选择一下 evaluation time 为 now(如果不激活该 下拉框,运行时候会出现 evaluation time 错误字样)。如果文本在某个组里,那么从 Evaluation group 里选择相应的组。勾选 blank when null 。TextField expression 是文本的表达式,能够 完成一些如字符串连接等简单操作,比如”当前页”+$V{PAGE_NUMBER}。Pattern 里点 击 create 按钮可选择时间日期相关的格式化后的形式,便于报表打印时间等动态生成。 5. 创建字段动态对象 字段也就是数据库中的字段,通过菜单【预览】-【报表字段】开启字段的列表(工具条 上可以找到相应的工具),可以拖放任意字段到报表的任何位置,比如拖动 shixianbiaozhi 的内容字段到 detial 段(内容无关紧要,只要知道原理)。 6. 添加参数和使用参数 我们重申参数作用,一般是需要外界提供参数给报表的入口,比如 SQL 语句的 where 条件 的表达式。通过【预览】-【报表参数】开启报表参数列表对话框(工具条上可以找到相应 的工具)。如图:输入名称及其他参数。【ok】,保存报表。 7. 添加变量和使用变量[套红打印暂时没有用到此功能] 变量的定义类似参数,通过【预览】-【报表变量】开启报表变量列表对话框(工具条上可 以找到相应的工具),如图,图中定义的变量的作用是:定义一个 Bug 的计数器,数据类型 是 java.lang.Integer,使用 Count 函数进行统计字段 tester,作用范围是模块组,也就是统计模 块的 Bug 量。其中的 tester 可以改成其他非组对象,比如 proname 是组对象,就不要用作这 里的统计参数。以上提供的是自定义变量,其实 iReport 系统还有提供一些内嵌(Buildin) 的变量,比如页码,行记录数等,视需要而使用。 8. 实现表格 画线,如图: 设置线的属性,如图: 设置线的颜色,如图: 9. 更改栏的属性 Band height 为 0 时,此栏不会显示。 10. 使用子报表 新建子报表,如图: 选择 Create a new report 新建新的子报表 选择 Use an exsisting report 使用已有的子报表 新建子报表的查询语句: 报表的字段: 报表参数: Sql 语句改成:select * from oa_reply where infoid=$P{infoid} and taskname='主管主任签发' 在主报表的子报表-属性 Subreport parameters 对应子报表设置 Parameter 的值对应上图 Parameter name 的值 Expression 的值对应主报表的 id 11. 设置 pdf 连接 下图 pdf 预览 pdf 工具的路径: 12. 编译 13. 预览 在 build 菜单内能选择多种方式,默认的为编译以后用 JRViewer 在 iReport 中预览显示效果, 选择 pdf preview 就是输出为一个 PDF 文件来预览显示效果。在实际的 web 打印中,使用 jaseperreport 提供的方法生成 PDF。 注意:如果需要连接数据库,就把相应的数据库驱动放置在 iReport 的 lib 目录
还剩16页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 15 金币 [ 分享pdf获得金币 ] 4 人已下载

下载pdf

pdf贡献者

Starts

贡献于2012-01-14

下载需要 15 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf