Jasperreport+ireport 实践操作及web应用
1.字段,变量,參数,传參
2.矢量图,位图
3.超链接,锚
4.数据源,自己定义数据源
5.国际化(I18N)
6.脚本
7.子报表
8.图表(饼图,柱图,线图)
9.导出pdf,xls,html...
操作版本号:jasperreports2.0.2+ireport2.0.2
下面针对每一个知识点,解说在ireport中是怎样操作,以及在真实项目中怎样部署.
点击 Parameters 菜单,此时弹出一个操作參数的窗体,单击 New button,输入參数名(Parameter Name),选择參数类型(Parameter Class Type),如要赋一个默认值则填写默认值表达式(Default Value Expression)(默认值如为字符串则以"string"形式填写,如为整形则以 new Integer(1) 形式填写,以此类推.),填好后,点 OK 就新建了一个參数了.
定义字段与定义參数是一样的操作,至于定义变量操作差点儿相同,也相对少用一些,在此就不讲述.
在ireport中怎样引用字段,变量,參数?
引用字段使用 $F{field_name}
引用变量使用 $V{variable_name}
引用參数使用 $P{param_name} 或 $P!{param_name}
$P!{param_name}一般用于拼接sql语句,它的值能够与sql语句拼接后,再去运行查询.
例:定义一个參数名为 where 类型为String 默认值为 "where id=100"
有一查询语句:select * from user $P!{where}
则运行查询时会替换成:select * from user where id=100
$P{param_name}在sql语句中使用时,也有一特殊情况.
例:有一參数名为 id,类型为Integer,默认值为 new Integer(100)
有一查询语句:select * from user where id=$P{id}
运行查询可正常查询,但假设有一參数名为 name,类型为String,默认值为"zhanngle"
有一查询语句:select * from user where name=$P{name}
运行查询时出错,不知道为什么(即使数据库中有该条记录),不知是不是bug,还是自已哪里弄错了.解决的方法是,将查询语句改为:select * from user where name='$P!{name}'
能够证明$P!{}语法,仅仅做替换操作,如上仅仅将$P!{name}替换成zhanngle.
也能够证明$P{}语法,在sql语句中使用时,值为数字类型还能够正常运行,如为字符串类型则会出错.
在程序中怎样传參? 如上例定义了一个name參数,那么在程序中怎样动态传參查询出不同的记录呢,也非常easy.
程序代码例如以下:



就是将參数名和值put进入一map,然后再填充报表时将map传过去即可了.
图与图之间(更详细的说法,应该是元素与元素之间)不能有不论什么重叠,如重叠则仅仅能显示最上层的图.
使用线条工具能够绘制斜线,当导出为pdf文件,没有不论什么问题,当导出html,xls文件时,发现斜线变成了矩形,解决方式是:使用外部图形编辑软件,绘制一条斜线,并保存为图片文件,再将这个图片文件插入到报表对应位置中.
你也能够设置使用我们配制的外部程序来预览,点Build -> PDF Preview,再点Execute (empty data source)button,就可以预览PDF文件。点Build -> HTML Preview,再点Execute (empty data source)button。就可以预览HTML文件。
定义一个參数名为 imageName 类型:String 没有默认值
在报表设计界面中绘制一个Image,打开该Image的属性框,选Image选项卡,在Image Expression文本框中输入:$P{imageName},代表该图片的路径是由imageName的參数值来决定的,我们能够在程序中传入该參数的值.













2.程序代码按下面方式编写














image=");
exporter.setParameter(JRHtmlExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.TRUE);
要包括双引號)
否则配制错误,请检查哪里出错。
调整好Detail区域的高度,执行(Build -> Execute (whit active connection))一下看看吧,假设你看到有正确数据,那恭喜你,你试验成功了!








下面我是我自己定义的一个数据源码:






























































2.创建实现数据源类

































































3.在填充报表时将该DataSource传进去即可了。







此时报表数据的来源。就是从自己定义数据源中得到的100条记录。












2.因为是自己定义数据源,因此要将数据源引用的相关类,所有引入ireport的classpath。以供ireport调用,否则ireport会抛java.lang.ClassNotFoundException。比如我以上三个类都是放在d:/workspace/jasperreports/classes文件夹下,那么点 Options -> Classpath -> Add Folder 选择d:/workspace/jasperreports/classes,选择好后,点Save Classpath。
5.国际化(I18N)
假设你对ResourceBundle类有些了解,那么你就会知道输入的是什么意思。
国际化,然后保存。
再编辑I18NTest_en.properties,在属性文件里添加一条i18n=hello I18n,保存。
arg1
)脚本中的一些方法被报表引擎的调用,当一些特殊的事件,像创建一个新页或者处理detail 行。










































































然后点Save保存。即创建了一个脚本。并再保存报表文件,此时你能够到报表文件文件夹找到一个TestScriptleScriptlet的java文件。这就是ireport自己主动生成的脚本类文件(脚本类名= 报表名+Scriptlet)。
8.图表(饼图,柱图,线图)
9.导出pdf,xls,html...










































































































































































































































































































































用户指南Ireport
Jasperreports api
Jasperreport+ireport 实践操作及web应用的更多相关文章
- 利用JasperReport+iReport进行Web报表开发
用JasperReport+iReport进行Web报表开发 序言 在非常多实际的项目里,报表都是当中十分重要的组成部分,比如把查询结果以报表的形式呈现出来.这里所提到的报表可不是简单的二维表,而是拥 ...
- 使用JasperReport+iReport进行Web报表开发
使用JasperReport+iReport进行Web报表开发 前言 在实际工程中非常,报告是其中很重要的一部分,结果以报表的形式呈现出来.这里所提到的报表可不是简单的二维表,而是拥有复杂表头的.多维 ...
- 20145203盖泽双 《网络对抗技术》实践九:Web安全基础实践
20145203盖泽双 <网络对抗技术>实践九:Web安全基础实践 1.实践目标 1.理解常用网络攻击技术的基本原理. 2.Webgoat下进行相关实验:SQL注入攻击.XSS攻击.CSR ...
- 20145203盖泽双 《网络对抗技术》实践八:Web基础
20145203盖泽双 <网络对抗技术>实践八:Web基础 1.实践目标 (1)编写Web前端--含有表单的HTML代码. (2)编写Web前端--javascipt验证用户名.密码的代码 ...
- kmeans算法原理以及实践操作(多种k值确定以及如何选取初始点方法)
kmeans一般在数据分析前期使用,选取适当的k,将数据聚类后,然后研究不同聚类下数据的特点. 算法原理: (1) 随机选取k个中心点: (2) 在第j次迭代中,对于每个样本点,选取最近的中心点,归为 ...
- 【ASP.NET Web API教程】2.1 创建支持CRUD操作的Web API
原文 [ASP.NET Web API教程]2.1 创建支持CRUD操作的Web API 2.1 Creating a Web API that Supports CRUD Operations2.1 ...
- 自学Aruba6.2-控制器基本维护操作(web页面配置)
点击返回:自学Aruba之路 自学Aruba6.2-控制器基本维护操作(web页面配置) 1 显示当前控制器版本 Dashboard---Controller中 2 升级Aruab os版本 Main ...
- ASP.NET 工作流:支持长时间运行操作的 Web 应用程序
ASP.NET 工作流 支持长时间运行操作的 Web 应用程序 Michael Kennedy 代码下载位置:MSDN 代码库 在线浏览代码 本文将介绍以下内容: 独立于进程的工作流 同步和异步活 ...
- Oracle delete和truncate实践操作之一
实践说明 本文章主要记录在Oracle中,delete和truncate进行数据删除之后,如何进行数据恢复.由于网上对delete和truncate的区别说明较多,此处不过多介绍两者区别. 注:由于环 ...
随机推荐
- 【撸码caffe 二】 blob.hpp
Blob类是caffe中对处理和传递的实际数据的封装,是caffe中基本的数据存储单元,包括前向传播中的图像数据,反向传播中的梯度数据以及网络层间的中间数据变量(包括权值,偏置等),训练模型的参数等等 ...
- 【HAOI 2008】 移动玩具
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1054 [算法] 广度优先搜索 [代码] #include<bits/stdc+ ...
- 【BZOJ3926】【ZJOI2015】诸神眷顾的幻想乡 广义后缀自动机
题目: 题目在这里 思路&做法: 参考的题解 既然只有\(20\)个叶子节点, 那么可以从每个叶子节点往上建一颗\(trie\)树, 然后合并成一棵大的\(trie\)树, 然后构建广义后缀自 ...
- 树状数组 poj2352 Stars
2019-05-20 22:52:07 加油,坚持,加油,坚持 !!! #include<iostream> #include<cstdio> #include<cstr ...
- Mybatis中resultMap的作用-解决实体类属性名和数据库字段不一致
解决实体类属性名和数据库字段不一致
- 第6章 服务模式 在 .NET 中实现 Service Gateway(服务网关)
上下文 您正在设计企业应用程序,该程序需要使用由其他应用程序提供的服务.该服务定义了一个合约,所有服务使用者要访问该服务都必须遵守该合约.该合约定义了与此服务通信所需的技术.通信协议和消息定义等内容. ...
- hibernate dao 公共方法
package com.dao.impl; import java.lang.reflect.ParameterizedType; import java.util.Collection; impor ...
- dll文件:关于MFC程序不能定位输入点
问题:无法定位程序输入点到动态链接库上...... 过程:找完整个工程文件夹: APS为资源文件: resource.h为定义文件: 完全复制 除主文件以外的所有文件,程序可用: 在主程序框Cpp文件 ...
- 优动漫PAINT用户界面介绍
使用优动漫PAINT能够快速实现工程巨大的漫画.插画以及动画,从13年发布至今一直备受好评,目前优动漫PAINT1.6.6.1是最新的版本,新版本的完善也受到更多年轻伙伴的青睐,使用优动漫PAINT可 ...
- docker批量删除容器、镜像
1.删除所有容器 docker rm `docker ps -a -q` docker rm $(docker ps -aq) 2.删除所有镜像 docker rmi `docker images - ...