jasperreport(2)

2020-02-22 12:56

exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, request.getContextPath()+\

exporter.setParameter(JRHtmlExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);

exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.TRUE);

3.超链接,锚

有时我们想在报表中为某个关键字添加超链接或锚,使鼠标点击该关键字时跳转页面.针对这一小功能,jasperreports 也提供了支持,在ireport中操作很简单.不是所有的元素都支持超链接,目前我所知道支持超链接的常用元素有,动态文本框元素(Text Field),位图元素(Image),图表元素(Chart tool).这三种元素设置超链接的方法都是一样,所以只介绍动态文本框如何设置超链接.

如何在ireport中插入超链接?

由于静态文本框不支持超链接,所以只能通过动态文本框为静态文字设置超链接,操作方法如下所述:

1.在工具栏中选中 Text Field 按钮,回到 Detail 区域,绘制一个Text Field (与绘制矩形方法一样),然后在该Text Field 上点右键,选 Edit Expresion,在弹出的窗口中输入表达式 \然后再点 apply 按钮.(注意: \要包含双引号)

2.打开该 Text Field 的属性框,选 Hyperlink 选项卡,将 Hyperlink target 改为 blank,Hyperlink Type 改为 Reference,在Hyperlink Reference Expression框中输入\http://www.csdn.net\再点关闭.(注意: \http://www.csdn.net\要包含双引号) 此时一个超链接已设置好,导出pdf,html文件看看,点击CSDN即可弹出CSDN的网页.

如何在ireport中插入锚?

其实锚是超链接的一种特殊形式,因此支持超链接的元素都支持锚,不支持超链接的元素都不支持锚,锚的设置也很简单,只要你知道使用html的设置锚,那么ireport也是差不多的.

设置锚,也需要两步操作 1.设置锚对象

在 Title 区域绘制一个动态文本框,输入表达式 “2007年终财务报表”,再打开它的Hyperlink 选项卡,在 Anchor Name Expression 框中输入 “title”,点关闭.此时已定义了一个锚对象.它的锚名字是 title. 2.链接锚对象

在 Detail区域绘制一个动态文本框,输入表达式 “返回顶部”,再打开它的 Hyperlink 选项卡,将Hyperlink target改为 self,Hyperlink Type 改为 LocalAnchor,在Hyperlink Anchor Expression框中输入 “title”,点关闭.

一个锚链接已设置完毕,导出pdf,html看看,当然,如果你的报表内容不多,那么锚起不到任何作用.

4.数据源,自定义数据源

数据源顾名思义数据来源,即报表数据从何而来。jasperreports可以从数据库、XML文件、CSV文件、java.util.Collection对象以及自定义数据源得到数据。在真实项目中,报表数据一般从数据库得到,下面介绍在ireport中如何配制连接制数据库的数据源。操作步骤如下:

说明:本例以MySql数据库来配制数据源

新建一个Document(报表文档),点 Data -> Connections/Data Sources -> New -> Database JDBC Connection -> Next。在弹出的窗口中按照提示填写属性,例: Name:mysql,

JDBC Driver:com.mysql.jdbc.Driver

JDBC URL:jdbc:mysql://localhost:3306/db_name User Name:root

Password:your_password

填好后,单击Test按钮,如弹出 Connection test successful!,则代表数据源配制正确,并再点Save 按钮,保存配制。否则配制错误,请检查哪里出错。 配制好后,即可连接数据库。

那么如何用数据源查询数据库,并将查询结果显示在报表上呢?

说明:本例操作必须配制好数据库数据源才能正常操作。而且连接的数据库里要有表。 点 Data -> Report Query,在弹出的窗口中输入SQL查询语句:select * from t_users 。

如果sql语句正确将在窗口底部显示该表的所有字段,点击OK,即完成了报表查询工作。 大家可以查看一下Fields面板,ireport已经自动将查询出的所有字段,定义成字段对象了(也就是最前面所说的定义字段)。

说完了如何将数据查询出来,接下来的工作就是如何将数据显示在报表界面上。

点View -> Fields打开Fields面板,在面板上任意选一个字段,将它拖到Detail区域的左上角对齐,再选一个字段拖到Detail区域的中上角,好了就用两字段做试验吧,只要Detail区域够宽,大家可以多拖两个字段到Detail区域,拖到Detail区域的字段将在报表中显示。调整好Detail区域的高度,运行(Build -> Execute (whit active connection))一下看看吧,如果你看到有正确数据,那恭喜你,你试验成功了!

自定义数据源

有时,你可能需要自定义一个数据源来满足你的需求,jasperreports对此也提供了良好支持。

只要你实现JRDataSource接口,就行了,很简单吧! JRDataSource接口声明如下: public interface JRDataSource {

public boolean next() throws JRException; public Object getFieldValue(JRField jrField) throws JRException; }

以下我是我自定义的一个数据源代码:

1.先创建一个Bean类,该bean类属性全是大写,这是因为ireport自动定义字段时,字段名全是大写,你也可以手动改为小写,那么该bean类属性就可以为小写,你要确保bean类的属性名与字段名一致(包括大小写)。

package test;

import java.sql.Timestamp;

publicclass Bean { privateintID;

private String NAME; private String NICKNAME; privateintSCORE; privatefloatBALANCE;

private Timestamp LASTLOGINDATE;

publicfloat getBALANCE() { returnBALANCE; }

publicvoid setBALANCE(float balance) { this.BALANCE = balance; }

publicint getID() { returnID; }

publicvoid setID(int id) { this.ID = id; }

public Timestamp getLASTLOGINDATE() { returnLASTLOGINDATE;

}

publicvoid setLASTLOGINDATE(Timestamp lastLoginDate) { this.LASTLOGINDATE = lastLoginDate; }

public String getNAME() { returnNAME; }

publicvoid setNAME(String name) { this.NAME = name; }

public String getNICKNAME() { returnNICKNAME; }

publicvoid setNICKNAME(String nickname) { this.NICKNAME = nickname; }

publicint getSCORE() { returnSCORE; }

publicvoid setSCORE(int score) { this.SCORE = score; } }

2.创建实现数据源类 package test;

import java.sql.Timestamp; import java.util.ArrayList; import java.util.List;


jasperreport(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:精编新版《安全员》考试题库800题(答案)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: