JasperReports 教程(2) - 一个简单报表

目标

通过本章教程,将能够了解如下信息

    使用iReport新建一个报表
    JasperReports 中的各区域的说明
    JasperReports 中Fields的用法
    将SQL选择的数据,填入报表中

准备支持

本章教程假设您已经了解如下知识

    JasperReports 与 iReport
    JBoss 与 JSP 基础
    SQL 基础
    使用如下脚本建立范例数据库TestDatabase.sql

新建报表

在iReport中选择 File -> New
在 New File 对话框选择 Report -> Blank A4,然后点击 Open this Template,新建一个名为sample2的报表。
JasperReports 区域说明

一个标准的JasperReport 分为如下区域

    Title - 标题 报表的标题,只在开始显示
    Page Header - 页眉 每页都会重复显示
    Column Header - 列头 可以用于显示列头的地方
    Detail - 细节 重复显示记录的地方
    Column Footer - 列脚 可以做一些列统计
    Page Footer - 页脚 每页都会重复显示
    Summary - 统计 在报表的最后出现

输入报表标题

在 组件面板 中拖拽 Static Text 组件到 Title 区域,然后调整文本框到合适的位置。在文本框的属性表的 Text 属性中输入“这是一个简单的报表例子”。并调整为水平、垂直居中。
组件面板和属性面板

组件面板可以使用如下方法调出

    窗口->组件面板
    Ctrl+Shift+8

属性面板可以使用如下方法调出

    窗口->属性
    Ctrl+Shift+7

设定页眉为打印时间

在 组件面板 中拖拽 Static Text 组件到 Page Header 区域,然后调整文本框到合适的位置。在文本框的属性表的 Text 属性中输入“打印日期”。并调整为水平、垂直居中。
在 组件面板 中拖拽 Text Field 组件到 Page Header 区域,然后调整文本框到合适的位置。在文本框的属性表的 Text Field Expression 属性中输入$P{REPORT_PRINT_DATE}。
在Report Inspector面板中,右键点击Parameters,选择Add Parameter。在 Name 属性中输入REPORT_PRINT_DATE, Parameter Class 属性选择 java.lang.String
外部变量

$P{XXX}可以让报表使用外部变量。但是不要忘记要在Parameters列表中加入此外部变量,并设定类型
设定列头

在此列中,我们使用了一个订单表的例子。我们需要展示如下信息

    订单号(ORDERID)
    下单日期(ORDERDATE)
    船名(SHIPNAME)
    运送城市(SHIPCITY)
    运送国家(SHIPCOUNTRY)
    重量(FREIGHT)

其中下单日期和重量需要按特殊格式显示
在 组件面板 中拖拽 6个*Text Field* 组件到 Column Header 区域,然后调整文本框到合适的位置。如下是此六个 *Text Field*具体属性
Text Field ExpressionExpression Class$P{COLUMN_ORDERID}java.lang.String$P{COLUMN_ORDERIDATE}java.lang.String$P{COLUMN_SHIPNAME}java.lang.String$P{COLUMN_SHIPCITY}java.lang.String$P{COLUMN_SHIPCOUNTRY}java.lang.String$P{COLUMN_FREIGHT}java.lang.String

同时不要忘了在Parameters列表中添加相应的字段

在这里不使用静态文本,主要是为多语言考虑。如果这里使用静态文本,列头就无法变换了。
设定列表内容

列表内容一般是重复信息。重复信息,我们放在Detail区域内。
在 组件面板 中拖拽 6个*Text Field* 组件到 Detail 区域,然后调整文本框到合适的位置。如下是此六个 *Text Field*具体属性
Text Field ExpressionExpression ClassPattern$F{ORDERID}java.lang.Integer$F{ORDERIDATE}java.util.Dateyyyy/dd/mm$F{SHIPNAME}java.lang.String$F{SHIPCITY}java.lang.String$F{SHIPCOUNTRY}java.lang.String$F{FREIGHT}java.math.BigDecima#,##0.00;-#,##0.00

同时不要忘了在Fields列表中添加相应的字段

$P带头表示是变量,需要在Paramters列表中定义
$F带头表示是字段,需要在Fields列表中定义
设定页脚内容

同样,在 Page Footer 区域放置2个 Text Filed 组件。
在此,我们可以使用内部变量 $V{PAGE_NUMBER} 和 $V{PAGE_COUNT} 来制作 “第 X 页,共 Y 页”的效果
Text Field ExpressionExpression ClassPattern"第 " + $V{PAGE_NUMBER} + " 页,共 "java.lang.String" " + $V{PAGE_COUNT} + " 页"java.lang.String

最后设计完的报表如下图
测试报表添加数据源

在添加数据源前,先确保数据库已经启动
我们使用jtds来接连Microsoft SQL Server数据库,请确保在iReport的classpath中加入了jtds.jar

在工具栏上,点击 Report Datasource 按钮,弹出 Connections / Datasources 对话框,点击 New 按钮,选择 Database JDBC connection
在 JDBC Driver 中选择 MS SQLServer (net.sourceforge.jtds.jdbc.Driver),其他根据实际情况填写

如果iReport不会自动搜索lib目录,可以使用如下方法,在classpath中加入jtds.jar
工具 -> 选项 选择 iReport 标签页,点击 classpath 标签卡
点击 Add JAR 按钮后,选择jtds.jar文件即可
输入查询SQL

选择Sample2 在属性面板中 Query Text*属性输入 "SELECT * FROM ORDERS" *The language of dateset query 选择 sql
查看结果

需要查看结果,点击Preview按钮即可。
可以在此下载样例报表文件Sample2.jrxml

你可能感兴趣的:(jasperreports)