JasperReport+iReport报表工具详细开发手册
iReport开发使用步骤
开发使用步骤(iReport 4.1.1)一、JasperReport 和iReport的介绍网上有这个软件的详细介绍。
可以搜索下,进一步了解。
这里只是简略介绍。
1、JasperReport 简介l 一个报表是由一个源代码的文件来描述,这个源文件就是由DTD(jasperreport.dtd, version 0.6.3 is listed in Appendix B)来定义的XML标记。
在0.5.3版本中它的源文件扩展名变成了.jrxml; 取代了一般的.xml扩展名。
报表的源代码被编译成jasper文件(扩展名是.jasper)。
l jasper文件是一种预报表,严密的说就像是java的类被封状成的对象。
Jasper文件通过你的应用程序来加载。
它被添加一个数据源的标记从而创建报表,接着它就能以你想要的格式输出(例如:pdf或xls)。
2、iReport 简介iReport也是开源组织中的一款免费软件,其主要作用是用来以可视化的方式设计生成JasperReport 所使用的报表格式文件,因为JasperReport 本身并未提供很好的可视化报表设计工具,iReport 的出现正好弥补了这个缺陷。
现在的iReport 的最新版本是4.1.3iReport运行时需要sun java2 SDK 1.5及以上版本,为了能编译我们的报表文件我们需要完整的安装JDK。
2、1、iReport几个重要的概念1)报表的动态对象变量、参数、字段○l字段(Fields):是数据库抽取出来的,希望在报表中出现的数据库内容。
比如一个ID 的所有值。
$F{ filedsName }○2参数(Parameters):这是你的应用需要提供给报表的入口,比如你希望在报表被解释的时候提供Where语句的条件值,那么就可以使用参数(Parameters)。
$P{ parameterName }○3变量(Variables):这是报表中一些逻辑运算的表现,比如统计值。
JasperReports最终用户手册中文版——第二章API 概述
2 API 概述大多数情况下,人们使用JasperReports的类库的时候都只会用到一小部分,并且不会对所有的API有个整体的概念。
在这一章节里让我们近距离的来看一下那些在使用时有重要意义的类和接口。
同时也可以了解在需要使用到JasperReports报表功能的应用程序里怎样使用这些类和接口。
Class dori.jasper.engine.design.JasperDesign从这个类开始介绍是因为这个类的实例为JasperReports生成报表提供原材料。
在JasperReprots使用内部的XML解析器解析了XML报表设计文件后便生成了dori.jasper.engine.design.JasperDesign实例。
如果应用程序不使用XML文件,这个实例的生成也可以通过编程来实现。
在提供源代码的例子里有一个叫做noxmldesign的例子,通过它你可以了解到如何不写XML报表设计文件而动态的生成一个dori.jasper.engine.design.JasperDesign实例。
所有dori.jasper.engine.design.JasperDesign类的实例在被填充和生成报表使用之前已经被编译出来了。
这就是我说它为类库提供原材料的原因。
Class dori.jasper.engine.JasperReport这个类的实例是编译好的报表设计对象。
它只会作为JasperReports报表编译的结果获得,并在填充表格和生成报表时被使用。
为了以后更快速的使用,在通过不通程度的检查和报表元素整理后,这个类库创建了一个临时文件存放包括报表变量表达式、文本域和图形表达式组表达式等所有的报表表达式信息。
这个临时Java源文件可以在两种情况下被编译。
一是在使用中编译,还有一种是被JDK编译。
如果在classpath里没有发现tools.jar e文件,编译器就会通过运行javac.exe来编译这个文件。
JasperReport+iReport高级报表设计实战
JasperReport+iReport高级报表设计实战序言一直以来,报表都是很多项目中一个重要的、不可获取的组成部分。
然而其复杂性和专业性又使得程序员不能够也没时间自己设计属于目前手头正在构建的系统的报表模块;即便设计来了又可能由于通用性等原因不能够应用到下一个系统当中,这就导致了报表类库/组件在市场上的火爆。
典型的例子就是水晶报表,几乎无处不在。
还有一些专门处理中国式报表的组件也陆续出现在软件市场上。
然而遗憾的是,他们中的绝大多数都是要收费的--这也无可厚非,毕竟人都是要生存的。
所以大多数预算不够充裕的程序员都将目光转向了开源软件,而JasperReport就将是第一个进入他们视线中的佼佼者。
然而代码开源不代表我们就可以大大方方的拿来就用了,人家的文档也是要收费的,所以市面上有关于JasperReport 的文档虽然也不少,但大多数都集中在简单应用和介绍基本操作的基础之上。
对于复杂的报表设计并不能提供良好的帮助。
本文将火力集中在相对复杂的报表设计(不包括图片和超连接等对办公系统或过程没有太大用途的页面元素),交叉表的生成等高级报表设计方案。
对于那些基本的操作则留给读者自行体会,相信可以为各位解决一些实际问题。
1 iReport概览 (4)2.1. 准备工作 (5)1.1.1 Database JDBC Connection Datasource. 51.1.2 JavaBean Set Datasource. 72 实战报表设计 (10)2.1 简单的复杂表头报表设计 (12)2.2 交叉表的设计 (13)2.2.1 利用iReport向导生成交叉表架构 (13)2.2.2 偷懒的解决方案 (16)3 结束语 (17)1 iReport概览JasperReport 是JasperSoft公司的一款开源的报表解决方案。
通过JasperReport,用户就可以方便的定制、设计、生成项目所需要的各种报表。
图示ireport中使用javabean作数据源开发基于jasperreports报表过程
图示ireport中使用javabean作数据源开发基于jasperreports报表过程图示ireport 中使用javabe an作数据源开发基于jasperreports报表过程——学习笔记系列之ireport起步xmlin本文不讲原理,因为网上的资源很多,本文以一个简单的日销售报表为例,记录在 ireport 中使用 javabe an 作数据源开发基于 jasperreports 报表过程 .一.准备工作1. 正确安装 jdk2. 到去下载 ireport, 本文使用 1.3.1 版本,解压 iReport 在任意目录,解压后的文件里面有一个 iReport.bat ,通过双击运行。
3. 到 /index.html 下载 jasperreport, 本文使用的是 1.3.1 版本,解压到任意目录,开发中需要使用其中的 jasperreports-1.3.1.jar 、 commons-logging-1.0.2.jar 、 commons-collections-2.1.jar ,使用 bean 做为数据源还需要 commons-beanutils-1.7.jar, 如果需要生成 pdf 文件 , 还需要 itext-1.3.1.jar 、 iTextAsian.jar, 如果使用动态编译 jrxml 文件,还需要 commons-digester-1.7.jar 。
二.创建 javabean1. 创建 DailySales.java, 一个简单 VO bean 。
import java.io.Serializable;public class DailySales implements Serializable{private static final long serialVersionUID= 1L;private String productNo;private String productName;private int number;private int money;private int id;public DailySales(String productNo, String productName, int number, int money){this .productNo= productNo;this .productName= productName;this .number= number;this .money= money;}public String getProductNo(){return productNo;}public void setProductNo(String productNo){this .productNo= productNo;}public String getProductName()return productName;}public void setProductName(String productName) {this .productName= productName;}public int getNumber(){return number;}public void setNumber(int number){this .number= number;}public int getMoney(){return money;}public void setMoney(int money){this .money= money;}public int getId(){return id;}public void setId(int id)this .id= id;}}2 .生成数据源import java.util.Arrays;import java.util.Collection;/*** 简单工厂类,取得数据* @author xmlin**/public class DailySalesFactory{//为了在ireport 中能够测试,必须使用static方法public static Collection<DailySales> getBeanCollection() {//数据源的生成,通常调用dao 操作List<DailySales> data = new ArrayList<DailySales>();for (int i = 0; i < 100; i++){data.add(new DailySales("货号"+ i, "产品"+ i, i, i * 100)); }return data;}}三.使用 ireport 开发报表样式1.新建一个项目。
ireport图文教程(超详细)(word文档良心出品)
1下载iReportiReport是一个可视化的报表模板设计工具,使用此工具能方便地对报表进行设计。
在iReport中已经包含了jasperreports在运行时需要的jar 文件,在项目中的lib目录中包含Jasperreports-***.jar即可,其中***为版本号,比如2.0.3。
下载地址:/project/showfiles.php?group_id=64348,此文档编写时版本为2.0.3,如图:点击download出现以下界面:可以看到提供了多种下载包,其中:ØiReport-2.0.3-src.zip:为iReport的源代码ØiReport-2.0.3.tar.gz:为.tar.gz格式,一般用于Linux、Unix等非windows系统ØiReport-2.0.3-windows.installer.exe:为exe格式,一般用于windows系统ØiReport-2.0.3.zip:为zip格式,可以用于各类操作系统本文使用window版本为例,因此下载iReport-2.0.3-windows.installer.exe即可。
2安装iReport安装iReport需要先设置JDK环境,2.0.X版本要求JDK1.5环境(另参考文档)。
如果是windows系统,直接双击安装图标即可。
(如果是下载的ZIP文档,则将其解压到指定的目录,还需运行bin/startup.bat)。
如果是其他系统,比如Linux,Unix等,解压下载的安装文件(如下载的是tar.gz格式,使用tar xvfz iReport-2.0.3.tar.gz进行解压,如下载的zip格式,使用zip命令解压),然后运行bin/startup.sh即可。
以下以在windows上安装为例:A.欢迎界面,点击“N ext >”继续B.阅读license内容,点击“I A gree”继续C.选择安装组件,点击“N ext >”继续D.指定安装路径,点击“N ext >”继续E.指定程序组名称,点击“I nstall”即可F.等待安装过程G.安装结束,点击“F inish”完成在桌面上会出现如此图标:。
JasperReport报表开发说明(深入浅出)
1.报表制作流程实例:我们实现一个简单的JasperReports示例,展现其基本的开发、使用流程。
Jasper Studio是基于Eclipse的报表设计工具(不熟悉Eclipse的看官先去熟悉一下基本知识吧),默认工作区设置为当前用户主目录下的JaspersoftWorkspace文件夹,并且不可更改。
首先,我们创建一个报表工程,本例中命名为DemoProject,然后创建一张新的报表(File --> New–->Jasper Report),就会出现类似下图所示的窗口让我们选择一个模板。
此例我们选Coffee模板,然后点Next。
在接下来的页面里,我们给报表模板起个名字(Demo1.jrxml)并放在DemoProject的根目录下,然后点Next,于是进入了数据源选择界面:数据源是填充报表的关键,我们必须制定一个数据适配器(Data Adapter),此时我们有三种选择:1、选择“OneEmpty Record - Empty rows”,这样我们就可以专注于报表的设计,而暂时不指定数据源,创建完报表之后,我们随时可以制定别的数据源。
2、选择“SampleDB - Database JBDC Connection”,这是JaspersoftStudio安装时提供的一个示例数据库。
3、点击“New”按钮创建一个新的数据源。
这正是本例要采用的方式,我们将创建一个连接到本机MySql数据库的world的数据源。
首先点击“New”,在弹出的向导页中选择“Database JDBC Connection”,然后点“Next”弹出下图所示的页面:配置好基本的数据库连接信息,点击“Test”测试通过之后,一个数据源就配置好了,我们点击“Finish”结束配置。
初次配置MySql数据源需要在Driver Classpath页面指定MySql驱动包的路径:配置并选择数据适配器之后,我们需要指定数据查询的语句,该语句查询出的字段将直接用于报表中的数据字段。
iReport使用说明
iReport使用说明iReport使用说明1、简介iReport是一个开源的报表设计工具,基于Java开发,可用于创建和各种类型的报表。
本文档旨在提供详细的使用说明,帮助用户熟悉iReport的各项功能并正确操作。
2、安装和配置2.1 和安装Java Development Kit (JDK)2.2 并安装iReport2.3 配置iReport的环境变量3、创建新报表3.1 新建报表项目3.2 设计报表3.2.1 设置报表属性3.2.2 添加数据源3.2.3 设计报表布局3.2.4 添加报表组件3.2.5 设置数据绑定3.2.6 设置报表参数3.2.7 设计报表样式和格式4、数据源管理4.1 添加数据库连接4.1.1 添加JDBC连接4.1.2 添加JNDI连接4.2 添加自定义数据源4.3 设置查询语句4.3.1 使用SQL查询4.3.2 使用JPQL查询5、报表布局5.1 页面设置5.1.1 设置页面大小5.1.2 设置页边距5.1.3 设置纸张方向5.1.4 设置打印设置5.2 添加报表元素5.2.1 文本框5.2.2 图片5.2.3 矩形框5.2.4 表格5.2.5 图表5.2.6 子报表5.2.7 其他组件5.3 设置组件样式和属性5.3.1 设置字体和颜色 5.3.2 设置边框和背景 5.3.3 设置可见性和位置5.3.4 设置超和书签6、数据绑定6.1 绑定静态数据6.2 绑定动态数据6.2.1 单值绑定6.2.2 列表绑定6.2.3 数据表绑定6.2.4 重复区域绑定7、报表参数7.1 添加参数7.1.1 输入参数7.1.2 输出参数7.1.3 多值参数7.2 设置参数默认值7.3 使用参数表达式8、报表样式和格式8.1 设置报表样式8.1.1 标题样式8.1.2 表头样式8.1.3 页脚样式8.1.4 数据行样式 8.1.5 重复区域样式8.2 设置报表格式8.2.1 数字格式8.2.2 日期格式8.2.3 对齐方式8.2.4 条件格式化9、预览和输出报表9.1 预览报表9.2 导出报表9.2.1 导出为PDF9.2.2 导出为9.2.3 导出为Excel9.2.4 导出为Word9.2.5 导出为其他格式附件:2、数据库连接配置文件法律名词及注释:1、JDK:Java Development Kit,Java开发工具包,由Oracle 提供的用于开发Java应用程序的软件包。
JasperReport开发笔记
JasperReport开发笔记1.iReport2.安装1.下载,解压iReport 0.4.0 (推荐src版本)2.确认JDK是1.4以上3.把JDK /lib下的tools.jar拷贝到{ireport_home}/lib目录中3.运行1.对于下载的Binary版本,只能运行/bin/startup.bat2.对于下载的Src版本,可以通过ant iReport运行(先安装ant)3.如果运行startup.bat,出现ng.NoSuchMethodError错误,一般是JDK版本太低。
如果确认已安装了1.4或以上,检查path系统变量,看看有1.3的JRE是不是排在前面(比如安装了Oracle的客户端,往往有1.3的JRE),如果出现Class Not Found,检查classpath。
对于通过ant的方式运行,一般都没什么问题,所以推荐下载src版本4.JasperReport 常见问题1..jrxml vs .jasper▪如果在运行时载入.jrxml, 那么每次调用还得编译, 不如预先编译成.jasper.不过预先编译的jasper,必须用同样版本的JasperReport载入,而且灵活性差些. 不过对于大部分报表,还是预先编译成jasper方便2.如果批量编译jrxml▪用Ant很容易解决▪▪▪▪.....▪▪3.如何使用图片?▪很容易,用Image控件就可以了. 在Image Express 里面可以用String来表示图片的路径, 或者用InputStream, File对象.不过不管用File还是String对象, 都不得不用绝对路径, 这显然很不灵活. 解决办法是,穿入一个$P的参数,表示图片所在的目录,然后用$P和文件名拼接出完整的绝对路径. 更好的方法是用InputStream, 例如this.getClass().getResourceAsStream("logo.jpg") ,这时只要把图片放在当前.jasper所在的目录就可以了,不必考虑什么参数,什么路径了4.显示非数据库字段变量▪显示如运行日期等,可以直接在Text Field里面输入new java.util.Date(), 然后把Pattern设成如mm/dd/yyyy.5.动态控制某些Field是否显示▪每个Static Text, Text Field甚至整个Band的属性里面都有Print When Expression, 比如设成new Boolean(!$P{isDisplay}.equalsIgnoreCase("yes")), 那么只有当参数display的值为yes的时候才显示6.使用Sub Report, 如何使用相对路径▪见1.3, 和使用图片类似, 用InputStream或者传入参数7.Query里面如何使用参数▪$P!{xxx} 或者$P{xxx} 后者只能用于类似PreparedStatement参数绑定, 而前者可替换Sql的任意部分. 在需要动态排序的时候, 前者特别有用. 比如select a,b,c from t order by $P!{orderClause} 不管用$P还是$P!, SQL最终是以PreparedStatement方式执行的, 不必太担心性能问题注意:参数是不能嵌套的, 比如$P{a} =''$P{b}'' , $P{b}=''value'', 不要指望$P{a}能被替换成''value''8.如何使用图表(Graph)▪JasperReport本身没有图表功能, 只有显示Image 的功能(见4.3). iReport里有个Graph向导, 其实质是通过jFreeChart 生成Image. 更另外, 更直接的做法是放一个Image控件, Image Express Class设置成java.awt.Image, 在Image Expression里通过自定义的类返回java.awt.Image对象. 例如''GraphProvider.getImage($P{REPORT_DATASOURCE},title, subtitle.....)''. GraphProvider是自己的类, public static Image getImage(JRDataSource, ....)9.如果显示多个图表▪在一张报表上显示一个图表和显示多个图表是不同的. 假设Query是select name,price,qty from xxx, 第一张图显示name-price, 第二张图显示name-qty, 如果还是按3.8的方法, 第二张图根本显示不出来! 为什么因为传入的是JRDataSource, 而JRDataSource仅仅是对ResultSet的简单封装, 在第一张图处理完后, 游标已经到了eof位置了, 在开始处理第二张图的时候,就必然抛出游标耗尽的异常! 怎么办自己写个JRDataSourceAdapter, 把JRDataSource对象里面的值预先保存到一个Collection (相当于一个Offline的数据集), 然后把这个Collection传个getImage方法. 具体是, 建一个Variable mydate, 类型是java.util.Map, Calculation Type- System, Initial Value Expression是JRDataSourceAdapter.JRDataSource2Map($P{REPORT_DATA_SO URCE},new String[]{"NAME","PRICE","QTY"},new Class[]{ng.String.class,ng.Double.class,ng.Dou ble.class}), JRDataSource2Map是自己写的一个Adapter. 然后在Image的Expression里面换成如''GraphProvider.getImage(mydata,title, other params...), 当然得修改getImage方法5.Export到Excel的问题1.如何去掉报表头等▪直接把不需要的Band删除(把其高度设为0). 如果仅仅是export到Excel的时候不需要报表头, 而输出到PDF等仍然需要保留, 那么使用print when expression, 见4.42.如果让Excel看起来整齐▪不要有空白地方! 首先把所有的Field设成一样高, 对齐! 把所在Band的高度也设成和Field一样高, 让Field正好放入Band. 然后调整Field的宽度, 让每个Field都相邻,没有空隙. 最后,记得设置参数: exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMP TY_SPACE_BETWEEN_ROWS,▪Boolean.TRUE);3.如何保留GridLine▪首先, 设置参数exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_ BACKGROUND, Boolean.FALSE); 然后,把每个Field或者Static Text 框的''Transparent''属性都勾上4.如何使字段名只显示一次▪如果把字段名放在ColumnHead区域, 那么输出到Excel, 会每个Page都显示一遍. 在设计Report时候, 一般会设定Page 大小. 然而对于Excel, 这个Page设定仍然存在,而且往往很讨厌, 因为在Excel里, 通常希望得到连续的数据, 然而Jasper仍然会''自作多情''进行分页. 比如说, 设计JasperReport的时候, 设定page size为Letter, Portrait, 那么输出到Excel的时候每隔大约30行(具体取决于Field的高度), page header, column header, column foot, page foot 会被重复一次, 而且还附带一个高度为0的Excel Row, 表示Page Break的地方. 把字段名放在title band里, 可以解决字段名重复的问题, 当然page header也不要显示了. 如果需要, 可以把title band的print when expression设成只有输出Excel的时候才显示5.为什么Excel里面的数据是从第二行,第B列开始显示的▪因为第一行和第A列分别是用来表示page top margin 和 page left margin的. 对于Excel来说, 纯粹多余. 解决方法是把page margin 设成0. 不过如果这个report还需要以PDF等显示, 那么设成0就不好看了. 最好能动态的改变page margin. 当然,这个改变只能在外部(调用Report的地方) 进行, 在设计Report的时候是无能为力的. 不幸的是, JasperReport类居然没有setMargin的方法,只有getter. 折中的方法只能是reflect了. 代码示意如下: //use reflect to set the private field of JRBaseReport▪ng.reflect.Field margin = JRBaseReport.class.getDeclaredField(▪"leftMargin");▪margin.setAccessible(true);▪margin.setInt(myRpt, 0); margin = JRBaseReport.class.getDeclaredField("topMargin");▪margin.setAccessible(true);▪margin.setInt(myRpt, 0); margin = JRBaseReport.class.getDeclaredField("bottomMargin");▪margin.setAccessible(true);▪margin.setInt(myRpt, 0);6.如何去掉Excel中隐藏的行▪如前说述, 由于page break的关系, Excel中每隔几十行,就有一个高度为0的row, 即使把page botom margin设为0, 把page footer去掉都没有办法. 唯一的解决办法是把page height设为很大. 同5.5一样, 不得不使用reflect:▪ng.reflect.Field pageHeight = JRBaseReport.class.getDeclaredField(▪"pageHeight");▪pageHeight.setAccessible(true);▪pageHeight.setInt(myRpt,Integer.MAX_VALUE);6.文档1.哪里有文档▪JasperReport有份Ultimate Guide, 不过不是免费的, 和jFreeChart一个德行. 不过网上有流传, 写的还可以, 60多页, 不过也没详细到哪里去. 如果下载源代码版, 那么看看自带的Demo也不错. SF的论坛也是问问题的最好地方7.源代码仅供参考(reportProvider--一个Servlet, GraphProider, JRDataAdapter都是普通类)/***Title: ReportProviderServlet*Description: Servlet to generate Jasper reports*Copyright: Copyright (c) 2004*Company: ****** @author zephyr* @version 1.0*/package xyz;import net.sf.jasperreports.engine.*;import net.sf.jasperreports.engine.base.*;import net.sf.jasperreports.engine.export.*;import net.sf.jasperreports.engine.util.*;import org.apache.log4j.*;import java.io.*;import java.sql.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;public class ReportProviderServlet extends HttpServlet{private static Logger log = LogManager.getLogger(ReportProviderServlet.class);//Initialize: Setup DataSourceManagerpublic void init() throws javax.servlet.ServletException{String prefix = getServletContext().getRealPath("/");String file = getInitParameter("data-source-file");DataSourceManager.configure(prefix + file);("initialized successfully!");}//Process the HTTP requestpublic void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{String reportClass = request.getParameter("reportClass");log.debug("Running Report:" + reportClass);boolean isExcelFormat = false;if (reportClass == null){throw new IllegalArgumentException("Jasper Class Unspecified");}String reportFormat =request.getParameter("reportFormat");if (reportFormat == null){reportFormat = "jasperPrint";}try{JasperReport myRpt = JasperManager.loadReport(this.getClass().getResourceAsStream("/jasperReports/" +reportClass + ".jasper"));//set ReprintHeaderOnEachPage=false for Excel FormatisExcelFormat = reportFormat.equalsIgnoreCase("excel");if (isExcelFormat){//use reflect to set the private field of JRBaseReport//No margin for excel format, max pageHeightng.reflect.Field margin = JRBaseReport.class.getDeclaredField("leftMargin");margin.setAccessible(true);margin.setInt(myRpt, 0);margin = JRBaseReport.class.getDeclaredField("topMargin");margin.setAccessible(true);margin.setInt(myRpt, 0);margin = JRBaseReport.class.getDeclaredField("bottomMargin");margin.setAccessible(true);margin.setInt(myRpt, 0);ng.reflect.Field pageHeight =JRBaseReport.class.getDeclaredField("pageHeight");pageHeight.setAccessible(true);pageHeight.setInt(myRpt, Integer.MAX_VALUE);//Don't print group header on each pageif (null != myRpt.getGroups()){for (int i = 0; i < myRpt.getGroups().length; i++){myRpt.getGroups()[i].setReprintHeaderOnEachPage(false);}}}Map params = new HashMap(10);Enumeration enu = request.getParameterNames();while (enu.hasMoreElements()){String key = (String) enu.nextElement();params.put(key,request.getParameter(key).toUpperCase().replaceAll("'", "''"));log.debug(key + "=" + request.getParameter(key));}log.debug("Before Filling");OutputStream httpOut = response.getOutputStream();Connection conn = DataSourceManager.getConnection(request.getSession());JasperPrint rptPnt = JasperManager.fillReport(myRpt, params, conn);conn.close();if (reportFormat.equalsIgnoreCase("jasperPrint")){response.setContentType("application/octet-stream");JRSaver.saveObject(rptPnt, httpOut);}else if (reportFormat.equalsIgnoreCase("pdf")){response.setContentType("application/pdf");response.setHeader("Content-Disposition","attachment;filename=\"" + reportClass + ".PDF\"");JasperManager.printReportT oPdfStream(rptPnt, httpOut);}else if (reportFormat.equalsIgnoreCase("excel")){response.setContentType("application/vnd.ms-excel");response.setHeader("Content-Disposition","attachment;filename=\"" + reportClass + ".XLS\"");JRXlsExporter exporter = new JRXlsExporter();exporter.setParameter(JRExporterParameter.JASPER_PRINT, rptPnt);exporter.setParameter(JRExporterParameter.OUTPUT_STREA M, httpOut);exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_ EMPTY_SPACE_BETWEEN_ROWS,Boolean.TRUE);exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAG E_PER_SHEET,Boolean.FALSE);exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PA GE_BACKGROUND,Boolean.FALSE);exporter.exportReport();}else if (reportFormat.equalsIgnoreCase("html")){JRHtmlExporter exporter = new JRHtmlExporter();response.setContentType("text/html");Map imagesMap = new HashMap();request.getSession().setAttribute("IMAGES_MAP", imagesMap);exporter.setParameter(JRHtmlExporterParameter.IMAGES_M AP,imagesMap);exporter.setParameter(JRHtmlExporterParameter.IMAGES_U RI,"image.jsp image=");exporter.setParameter(JRExporterParameter.JASPER_PRINT, rptPnt);exporter.setParameter(JRExporterParameter.OUTPUT_STREA M, httpOut);exporter.exportReport();}log.debug("Report Exported");}catch (Exception ex){log.error("Error Occured", ex);}}}/***Title: JRDataSourceAdapter*Description: Converting JRDataSource to Mapped ArrayList*Copyright: Copyright (c) 2004*Company: ****** @author zephyr* @version 1.0*/package xyz;import net.sf.jasperreports.engine.*;import net.sf.jasperreports.engine.design.*;import java.util.*;public class JRDataSourceAdapter{public static Map JRDataSource2Map(JRDataSource dataSource, String[] fieldNames,Class[] fieldClasses) throws JRException{HashMap result;if (fieldNames.length != fieldClasses.length)throw new JRException("Number of Field Name & Class unmatch");}JRDesignField[] fields = new JRDesignField[fieldNames.length];result = new HashMap(4);for (int i = 0; i < fieldNames.length; i++){fields[i] = new JRDesignField();fields[i].setName(fieldNames[i]);fields[i].setValueClass(fieldClasses[i]);result.put(fieldNames[i], new ArrayList());}do{for (int i = 0; i < fields.length; i++){Object value = dataSource.getFieldValue(fields[i]);((ArrayList) result.get(fields[i].getName())).add(value);}}while (dataSource.next());return result;}}/***Title: GraphProvider*Description: Generate JFreeChart Image*Copyright: Copyright (c) 2004*Company: ***** @author zephyr* @version 1.0*/package xyz;import net.sf.jasperreports.engine.*;import net.sf.jasperreports.engine.design.*;import net.sf.jasperreports.engine.export.*;import org.jfree.chart.*;import org.jfree.chart.axis.*;import org.jfree.chart.plot.*;import org.jfree.data.*;import java.awt.*;import java.awt.image.*;import java.io.*;import java.util.*;public class GraphProvider{public static Image getImage(Map dataSource, String fieldNameX, String fieldNameY,String chartName, String titleX, String titleY, boolean isBarChart, int imageWidth,int imageHeight) throws JRException{JRDesignField fieldX = new JRDesignField();fieldX.setName(fieldNameX);fieldX.setValueClass(ng.String.class);JRDesignField fieldY = new JRDesignField();fieldY.setName(fieldNameY);fieldY.setValueClass(ng.Double.class);ArrayList periods = (ArrayList) dataSource.get(fieldNameX);ArrayList values = (ArrayList) dataSource.get(fieldNameY);DefaultCategoryDataset categoryDs = new DefaultCategoryDataset();for (int i = 0; i < values.size(); i++){Object obj = values.get(i);double dataValue = 0;if (obj != null){dataValue = ((Double) obj).doubleValue();}categoryDs.addValue(dataValue, null, (String) periods.get(i));}JFreeChart c = null;if (isBarChart){c = ChartFactory.createBarChart(chartName, titleX, titleY, categoryDs,PlotOrientation.VERTICAL, false, false, false);}else{c = ChartFactory.createLineChart(chartName, titleX, titleY, categoryDs,PlotOrientation.VERTICAL, false, false, false);}c.getTitle().setFont(new Font("Arial", Font.BOLD, 16));NumberAxis axis = (NumberAxis) c.getCategoryPlot().getRangeAxis();axis.setAutoRange(true);TickUnitSource tickUnits = NumberAxis.createIntegerTickUnits();axis.setStandardTickUnits(tickUnits);return (c.createBufferedImage(imageWidth, imageHeight));}}。
Jasper + ireport 集成报表到Web应用,操作说明
北京xxxxxxxxx公司JasperReport + ireport集成报表到Web应用操作说明郝建柱2011/2/24第一部分,下载与安装Ireport官网:/,从这里可以下载到下载后的文件名安装:没什么注意的,一路回车就好了第二部分,ireport与JasperReport简单说明1,ireport,是一个制作报表的工具,用其设计报表样式2,JasperReport,是在程序里操作ireport报表的一套类库先简单介绍,以下详细说明第三部分,使用ireport制作报表以ireport3.7.6为例,依次选择“文件–》New…”出现下图在接下来出现的对话框中选择保存位置就好了。
建好的报表分这样几个部分,下面依次说明Title : 报表标题,也就是在报表首页出现的Page Header : 报表每页的页头,Page Footer页脚Column Header : 列头,Column Footer 列脚Detail : 对数据源进行循环显示Summary : 汇总,也就是在报表最后一页出现的不需要的部分可以在ireport左边删掉,如下图示接下来以Oracle数据库的scott用户中DEPT表为例,制做一个简单的报表1,设置报表语言在报表边缘外单击,在ireport右边的属性面板中找到Language属性,设置为Java,如下图示2,以数据库为报表的数据源,显示简单的报表首先,把oracle的jdbc驱动引到ireport里,具体做法为:点击:工具-》选项,找到Classpath选项卡,按下图操作找到oracle的JDBC,添加进来就好了然后,点击ireport工具栏上的这个按钮在弹出的窗口中点new按向导,建一个数据源,注意,这个数据源我们在ireport里设计报表用的,与程序并没有关系接下来点工具栏上这个在弹出的窗口中写查询语句,如下图示点OK后,在ireport左边的面板上Fields下边就有了sql所查出来的列,如图现在只要把Fields下边的,将来要显示字段拽到报表设计器中上Detail部分,就好了,注意:把Field拽到Detail中后,在Column Header会自动出现对应的列头,只要双击,就可以写中文了接下来从ireport右边的组件面板中找到Static Text控件,拽到Title里,双击就可以输入文字,结果如下注意:这里所有的Static 和Field,需要在右边的属性面板中,逐一设置两个属性,如图这是为了将来把报表集成到程序里之后,让其在页面上显示中文点击就可以看到结果一般查询都是有条件的,刚才写的sql是查全部的,现在写带查询条件的sql,具体做法为:在ireport窗口左边的面板里,找到Parameters右击,添加Parameter,如图选中刚才添加的这个参数,在右边的属性面板中给其设置名字,比如叫parDname修改刚才写的sql为这样的简单说明红色的部分:在ireport里,用$P{参数名}来取参数,这个参数以后可以从程序里传进来,上边的$P!{parDname},多了一个!号,表示,把接来的参数作为字符串拼到sql中,如果去掉!号,写成$P{parDname},就表示SQL参数,相当于在JDBC中写select * from dept where dname like ?这样就创建了带条件的查询3,使用Variable(变量)做简单的汇总以统计查询结果的总条数,和总人数为例注:在scott的dept表里没人部门人数一列,在此用部门编号来代替在ireport左边找到Variables点右键,添加两个Variable添加后,在右边的属性面板分别给两个变量起名,varPcount (统计总人数),varRecordCount(统计总记录数)在属性面板上,对varPcount设置,如图这几个属性一看就清楚其作用了,Reset type:Report是对事个报表做统计在Variable Expression里选择要统计的Field名,如图在属性面板上,对varRecordCount配置,如图在Calculation属性中,选择count,表示统计数量因为是数量,所以,Variable Expression里随便选一列就行对比:在没有分组过的sql里select count(*)和selectcount(deptno)的结果是一样的配置好好,将两个Variable从左边拽到报表中对应位置就好了,可参照下图预览后就可以看到结果了4,图表的显示,在此,以显示部门人数为例,做一个图表首先给报表添加一个数据集,操作如图示起名为dsPcount按向导完成数据集的创建,之后配置数据集,给数据集添加参数,如图起名为dsParDname在创建好的数据集上右键-》Edit Query,添加查询条件然后在从右边的组件面板中拽一个Chart控件到Summary部分,选择一个样式后,点OK,在接下来的向导中,第一步选择刚创建的数据集,dsPcount,第二步中,选择Key,Value,分别写两个按钮,选择要显示的键和值完成后,在生成的图表上右键-》Chart Data,在DataSet标签上下边做如下配置在Parameters标签中这样配置在Dataset parameters name,选择数据集的参数,在Value expression里,选择主报表定义的参数在Detail标签中,这样配置这样,显示图表的操作就完成了,预览就可以看到效果了第四部分,把报表集成到Web应用程序中用MyEclipse新建一个Web Project,在WebRoot下新建一个reports文件夹,用来放ireport生成的jasper文件找到前边保存ireport报表的路径,报表在预览后,生成jasper 文件,如图把这个deptReport.jasper文件复制到Web项目里的reports 文件夹中导入JasperReport的包,包可以从以下路径找到Ireport安装路径\iReport-3.7.6\ireport\modules\ext把这里所有的包引到Web项目里,引入oracle的jdbc驱动,接下来进行编程,以Servlet为例1,生成报表并且以HTML形式在网页上显示Servlet的主要逻辑代码如下:request.setCharacterEncoding("utf-8");// 接收查询参数,将来这个参数就是我们在报表中定义的parDnameString deptName = request.getParameter("dname");// 报表文件路径,我们用ireport做的jasper文件路径// JasperReport需要jasper文件的真实路径String reportPath = request.getSession().getServletContext().getRealPath("/reports/deptReport.jasper");// 报表参数,jasper文件可能不只一个参数// 在程序里,用一个Map对象,向jasper文件传递他需要的参数Map reportParameters = new HashMap();reportParameters.put("parDname", deptName);// 报表连数据库所用的数据连接// 因为报表直接以数据库为数据源,所以在这里需要给jasper文件一个jdbc连接Connection con = null;// 清空响应流response.reset();// 设置输出格式response.setContentType("application/html");// 创建JDBC连接Class.forName("oracle.jdbc.OracleDriver");con = DriverManager.getConnection("jdbc:oracle:thin:@oracle10:1521:oracle", "scott", "tiger");// JasperReport提供的类,用于生成一个HTML文件JasperRunManager.runReportToHtmlFile(reportPath, reportParameters, con);response.sendRedirect(request.getContextPath()+ "/reports/deptReport.html");/** 如果要在网页上显示PDF文件,把前两句去掉,放开这段注释* ServletOutputStream out = response.getOutputStream();* //从jasper报表生成PDF字节* byte[] pdfBytes = JasperRunManager.runReportToPdf(reportPath, reportParameters, con);* //设置输出内容长度* response.setContentLength(pdfBytes.length); //将PDF写入报表* out.write(pdfBytes, 0, pdfBytes.length);* out.flush();* out.close();*/// 关闭数据连接con.close();这里只写出逻辑代码,实际用的时候,加上各种异常的处理。
第二章 JasperReport 与iReport
第二讲 iReport的使用 的使用
本章目标
iReport 显示汉字。 。 报表元素详细说明。 。 java参数传递。
本章作业
用JavaBean构造数据源,ID,身份证号, 电子邮件地址,得分;其中得分大于九 十的数据显示为红色。 作业形式:PDF与Jrxml文件。 日期:六月十日之前。
报表元素
Image(图像)
报表元素
Static text(不会变动的文字)
– static text被用来展示非动态文本的报表。它是一个标准的字符串,不 是表达式,也不需要依照java语言的规范。
报表元素
Text field(文字栏位)
文本区域可以打印一个java表达式的值。简单例子就是打印一个字符串
iReport 显示汉字
显示亚洲的汉字需要两个Jar包。两个包的位置 在: C:\Program Files\Jaspersoft\iReport3.7.2\ireport\modules\ext
iText-2.1.7.jar
iTextAsian.jar
iReport 显示汉字
iReport 显示汉字
(ng.String)来自于一个表达式想这个:“Hello iReport!”
报表元素
Text field(文字栏位)
Textfield Expression Classit指定域表达式的返回类型;可能的值有许多 ,包括所有的由sql类型组成和一些管理数据的类的java对象, 以下表格 列出了所有可选的类型的。
报表元素
-Line(线段) 在JasperReports中线被定义为长方形,有对角线的长方形。
JasperReport+iRepor
iReport 安装 运行
环境要求(Requirements) 环境要求 iReport运行时需要sun java2 SDK 1.5及以上版本,为了 能编译我们的报表文件我们需要完整的安装JDK。 下载(Download) 下载 我们可以从立方开源商业智能()的网站 下载到iReport3.0版本,以及相应的源码。 /ireport/download/ 运行(Run) 运行 将文件下载到本地解压后,您可以直接双击iReport.exe 或者iReport.b够创建复杂报表的开源项目。它100%使用 Java语言编写。是目前全球最为流行的开源报表设计器。 由于它丰富的图形界面,你能够很快的创建出任何一种你想 要的报表。 以下是iReport一些比较突出的功能: iReport 1、拖拽式,所见即所得的报表编辑器。 2、多样的向导来简化复杂的报表设计任务。 3、 超过30个排版和格式化工具。 4、报表可转换为PDF HTML EXCEL FLASH CSV RTF TXT OpenOffice Java2D JRViewer等格式。
jsp输出PDF报表示例
1、需要把下面的包导到项目里 itext-1.3.1.jar iTextAsian.jar jasperreports-3.0.0.jar jfreechart-1.0.0.jar
jsp输出PDF报表示例
2、配置WEB.xml web.xml文件配置如下: <servlet> <servlet-name>ImageServlet</servlet-name> <servletclass>net.sf.jasperreports.j2ee.servlets.ImageServlet</servletclass> </servlet> <servlet-mapping> <servlet-name>ImageServlet</servlet-name> <url-pattern>/servlets/image</url-pattern> </servlet-mapping>
JasperReport+iReport报表开发手册
JasperReports+iReport 报表开发手册V1.0写在前面...JasperReports是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,或者XML格式。
它有一个相关的开源工程--IReport,这是一个图形化的辅助工具,主要用于数据报表设计。
JasperReports完全是由Java写成,可以应用于Java的应用程序,包括J2EE,Web应用程序中生成动态内容,它主要目的是辅助生成面向页面的(page oriented),准备付诸打印的文档。
总的而言,JasperReports主要分成三个部分,包括数据报表设计、数据填充与数据报表导出。
第一章JasperReport+iReport使用简介JasperReport在讨论jasperReport之前先介绍下Ireport.Ireport是个工具,用它可以方便的生成报表,比如可以动态链接数据库生成报表,也可以在SQL语句中输入参数,提取指定的数据生成报表。
用ireport生成报表最终会产生两种文件jsxml和jasper文件。
其中jsxml可以认为是XML文件,用来定义报表格式的,比如报表头是什么内容,报表体有哪些列等等,jasper是由jsxml编译生成的二进制文件,用来产生报表。
所以如果有jsxml文件,我们就定义好了报表的格式,现在还缺一个就是数据源了,用来填充报表。
比如数据源我们可以连接数据库得到。
综上所述,Jasper定义报表格式+数据源=最终生成的报表1.JasperReport是什么JasperReport是一个免费、开源的纯JAVA报表工具和引擎,功能很强大。
她可以支持多种数据源,支持Bean作为数据源(支持Hibernate)、Connection作为数据源、xml记录集数据源、ResultSet作为数据源,等等。
她可以很灵活地设计普通报表、主细表、交叉报表。
也可以很方便地将报表的结果导出成pdf、excel、rtf、html等等的格式。
Java开源报表JasperReport、iReport4.5.1使用详解(四)
③进行报表设计,排列好字段。这步骤பைடு நூலகம்前面的几节有详细的介绍。
四、和Struts2
整合
我们的iReport的数据源,这里取一个List集合,这个List集合,我们从Struts2中获取。
①导入所需jar包
前面几节有介绍,再次不再赘述,需要注意的是,导入Jar包的时候要避免冲突
三、设置数据源
①选择JavaBean Datasource
输入Class name 然后单击 Read attributes②选择需要的字段,Add selected field 即可。
在上一步中,有可能出现Read attributes,读取不出来属性的情况,一般请检查下面两点:a).Class 是不是选对了
extends后面需要添加jasperreports-default
<package name="test" namespace="/report" extends="struts-default,jasperreports-default">
②配置Struts2配置文件
<package name="test" namespace="/report" extends="struts-default,jasperreports-default"> <action name="toHtml" class="totalViewAction" method="listTotalView"> <result name="success" type="jasper"> <param name="location">/web/report/groupScore/countView.jasper</param> <param name="dataSource">listTotaltView</param> <param name="format">HTML</param> </result> <result name="error">/error.jsp </result> <result name="input"> /error.jsp </result> </action> <action name="toPdf" class="totalViewAction" method="listTotalView"> <result name="success" type="jasper"> <param name="location">/web/report/groupScore/countView.jasper</param> <param name="dataSource">listTotaltView</param> <param name="format">PDF</param> </result> <result name="error"> /error.jsp </result> </action> <action name="toXml" class="totalViewAction" method="listTotalView"> <result name="success" type="jasper"> <param name="location">/web/report/groupScore/countView.jasper</param> <param name="dataSource">listTotaltView</param> <param name="format">XML</param> </result> <result name="error">/error.jsp </result> </action> <action name="toXls" class="totalViewAction" method="listTotalView"> <result name="success" type="jasper"> <param name="location">/web/report/groupScore/countView.jasper</param> <param name="dataSource">listTotaltView</param> <param name="format">XLS</param> </result> <result name="error"> /error.jsp </result> </action> </package>
Ireport+JasperReport制作报表二-JasperReport编译模板
Ireport+JasperReport制作报表⼆-JasperReport编译模板1. JasperFillManager:填充管理,主要的⽅法如下:fillReport:填充报表,多态函数,返回值为JasperReport,参数为报表和报表参数Map,参数Map⾥包括Parameters、DataSource等,如果是从数据库取数据还要有connection参数;fillReportToFile:填充报表⽣成⽂件,多态函数,⽆返回值,参数为源⽂件、⽬标⽂件和报表参数Map。
2. JasperExportManager:导出管理,主要⽅法如下:exportReportToPdfFile:导出PDF⽂件,多态函数,提供⼏种⽅式:从源⽂件导出到⽬标⽂件、从JasperPrint导出到⽬标⽂件、从源⽂件流导出⽬标⽂件,如果枚举的话有9种⽅式,⽆返回值。
exportReportToHtmlFile:导出HTML⽂件,同上exportReportToXmlFile:导出XML⽂件,同上3. JasperPrintManager:打印管理,主要⽅法如下:printReportToPdfFile:把报表导出成PDF⽂件,然后⾃⼰打印;printReport:直接打印报表,多态函数,提供⽂件名、⽂件流或JasperReport直接启动打印,返回值true/false;printPages:同printReport,但参数增加了页数选择。
4. JasperCompileManager:编译管理,把.jrxml⽂件编译成.jasper⽂件,主要⽤到的⽅法只有⼀个,compileReportToFile:多态函数,参数.jrxml⽂件名或者JasperDesign、InputStream和输出.jasper⽂件名5. JRRewindableDataSource:定义⼀个可以往回查看记录的⽅式的接⼝,主要⽅法是moveFirst移动到第⼀⾏,是JavaBean和TableModel等数据源的祖先。
iReport使用教程
一、iReport简介说到iReport不得不先介绍Jasperreport,Jasperreport是一个报表制作程序,用户需要按照它制定的规则编写 一个XML文件,然后得到用户需要输出的格式文件。
它支持输出的文件格式包括PDF,HTML,XML,XLS,CVS等等。
而iReport就是一个制 作Jasperreport的XML文件的可视化开发工具。
只是一个UI。
二、安装说明2.1 基本安装现在最新的版本是iReport 0.5.1 (Aug 27, 2005).下载后解压然后在根目录双击iReport.bat就可以用了,但是为了可以使用external ttf font还必须要把 iReport-0.5.1/fonts 加到环境变量里面去。
2.2 了解制作报表用的包下载后到到 iReport-0.5.1/lib 里看看,你就可以发现iReport的真面目了。
(1) jasperreports-1.0.1.jarjasperreports 是iReport的核心内容。
它是一个强力的报表产生工具,他有能力描述丰富内容到屏幕上、到打印机或到PDF, HTML, XLS, CSV和XML文件。
它完全用Java编写的,并可在各种Java应用(包括J2EE或WEB应用)中用来产生动态内容。
它的主要目的是以一种简单而灵活 的方式来帮助创建导向的页面。
JasperReports组织根据在一个XML文件中定义的报表设计通过JDBC来接受来自一个关系数据库中的数据. 为了以数据来填充报表,报表设计必须首先被编译。
jasperreports的官方网站:/(2) itext-1.3.1.jariText是一个开放源码的Java类库,是用来生成PDF文件的。
iText的官方网站:如果要在生成的pdf文件显示中文等亚洲字符,还必须下载itext的亚洲字符包。
tTextAsian的官方下载地址:/downloads/iTextAsian.jar(3) jfreechart-1.0.0-rc1.jarjfreechart是一款免费的、功能强大的统计图生成工具,可以直接生成PNG,JPG 等各式的文件。
jasperReport使用说明
一、iReport软件安装步骤。
(默认安装即可)1、在安装iReport之前,先把jdk的环境变量配置好!否则iReport不能用,这是因为iReport是用纯java写的。
2、开始安装,双击iReport-4.0.2-windows-installer.exe3、点击next4、点击I Agree5、选中iReport,点击Next6、可以更改路径,点击Next7、剩下步骤,按照默认安装,安装完成!二、工具使用,新建模板、调整样式。
设计一个最简单的报表1、新建一个A4竖行的jrxml模版,如下图,点击Open this Template2、选择保存路径,点击下一步3、点击完成进入如下图,就可以编辑报表了4、开始编辑报表,如给报表添加一个标题“报表的标题”,在组件面板里将Static T ext 用鼠标直接拖到Title区域中将标题组件拖到合适的大小,也可以编辑字体等。
但是一定要在Title 区域。
5、用同样的办法,可以将需要的组件拖到报表模版中。
其中常用的StaticText是静态的,TextField组件是动态的。
6、如下图,是一个做好的报表。
其中$F{region_name},$F{ip},$F{volume}和javaBean的属性名字应一致,包括大小写,否则会找不到这个字段。
另外$V{index}是报表中自定义变量。
其中,可以查看属性配置,例如region_name,又如,自增变量index,如下还可以进行编辑表达式,7、最终编辑的ireport文件,就是一个xml文件8、预览9、JasperCompier再把这个xml文件编译成jasper文件,进行加载。
用jasper的jar类库把数据以报表的形式展示出来。
也可以导出成html、excel、cvs、pdf等各种格式。
10、导出pdf,需要设置属性和,否则中文会乱码。
11、也可以手工在iReport中编译成.jasper文件,然后在程序中加载.jasper文件。
Jasper Report用户手册
Jasper Report用户手册version1.01 简介2 API概览Class net.sf.jasper.engine.design.JasperDesignClass net.sf.jasper.engine.JasperReportClass net.sf.jasper.engine.JasperCompileManager Class net.sf.jasper.engine.JasperPrintInterface net.sf.jasper.engine.JRDataSourceClass net.sf.jasper.engine.JRResultSetDataSource Class net.sf.jasper.engine.data.JRTableModelDataSource Class net.sf.jasper.engine.JREmptyDataSourceClass net.sf.jasper.engine.JasperFillManagerClass net.sf.jasper.engine.JRAbstractScriptletClass net.sf.jasper.engine.JRDefaultScriptletClass net.sf.jasper.engine.JasperPrintManagerClass net.sf.jasper.engine.JasperExportManagerClass net.sf.jasper.engine.JasperRunManagerClass net.sf.jasper.view.JRViewerClass net.sf.jasper.view.JasperViewerClass net.sf.jasper.view.JasperDesignViewerClass net.sf.jasper.engine.util.JRLoader3 主要的任务和过程3.1 XML解析3.2 编译报表设计(Report Designs)3.3 Report Design 预览3.4报表装填(Filling Report)3.5 查看报表(Viewing Reports)3.6 打印报表3.7 导出报表3.8 对象的载入和保存4 报表设计(Report Designs)4.1 DTD Reference4.2 XML 编码4.3 报表属性Report NameColumn Count(列数)Print Order(打印顺序)Page Size(页面大小)Page Orientation(默认设置为Portrait)Page Margins(页边距)Empty Data Source BehaviorScriptlet Class5 报表数据(Report Date)5.1 表达式(expressions)5.2 参数(Parameters)参数名参数类型Prompting for Parameter values参数的默认值(parameter default value)5.2.1 内置的报表参数5.3 Data Source(数据源)5.4 报表查询(Report Query)5.5 字段(Field)字段名(Field Name)字段类型(Field Class)字段描述(Field Description)5.6 变量(Variables)变量名(Variable Name)变量类型(Variable Class)重置类型(Reset Type)Reset Group5.6.1 运算(Calculations)5.6.2 内置的报表变量(Build-in Report Variables)6 Report Sections6.1 Main Report Sections6.2 Data GroupingGroup NameGroup HeaderGroup Footer7 Scriptlets8 Report ElementsAbsolute PositionRelative PositionElement SizeElement Color8.1 Text Elements8.1.1 Fonts and Unicode Support8.1.2 Static Texts8.1.3 Text Fields8.2 Graphic Elements8.2.1 Lines8.2.2 Rectangles8.2.3 Images8.2.4 Charts and Graphics8.3 Hyperlinks8.4 Element Groups9 Subreports9.1 Subreport Parameters9.2 Subreport Data Source10 Advanced JasperReports10.1 XML Report Designs Loading and Writing10.2 Implementing Data Sources10.3 Customizing Viewers10.4 Exporting to New Output Formats1 简介JasperReport是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,或者XML格式。
jasperreport%2Bireport开发java报表入门级教程
特别声明:本文版权为原文作者李克喜所有。
1使用iReport制作报表的详细过程(Windows环境下)1.1前言在网络上可以搜索到很多使用iReport和Jasperreport配合实现各种报表任务的文章,但是我觉得很少有一篇(几乎没有)做一个比较详细的介绍如何使用iReport制作报表的全过程,我所看过的文章的基本思想是覆盖面广,很多内容都是提及即过,并不是开发人员都有时间为每个实践花费时间自己实现,如果能有更详细的资料,那岂不是一件乐事。
出于这个念头促使我写这篇文章,希望能对那些使用iReport和Jasperreport朋友有所帮助,特别是需要亲身去实现报表的朋友,希望能给你们带来一点帮助。
本文不是对iReport的每个细节进行介绍,关于iReport的每个细节可以参考iReport网站的资料,但是可能得花费一些费用。
一般用户没有必要付出这些费用,因为我们关心的是如何制作我们需要的报表,而不是去扩展iReport,比如制作iReport的插件。
1.2准备1.2.1下载JDK1.2.2下载iReport1.2.3准备数据库1.2.4启动MySql服务确定Mysql使用的的字符集是重要的问题,特别是对需要中文报表的朋友,应该特别注意这个问题。
1.2.5确定商务逻辑也就是希望完成什么样的报表任务。
需要实现的报表的详细描述,这是实现报表的业务条件,否则所有的任务绝大部分没有意义。
本文使用一个Bug记录表为例,本文的例子是制作一个根据项目和项目中的模块分组的Bug量统计。
1.3开始配置基本信息1.3.1配置界面使用的语言和报表输出路径第一次进入系统是英文环境,可以通过【Tools】-【Options】开启配置iReport 系统的基本信息对话框。
在“Language”选项里面选择你需要的界面语言,比如“中文-中国”。
点击【Apply】按钮,系统既把整个界面中文化。
在配置iReport系统的基本信息对话框中选择【编译】Label,之后决定你的报表输出路径,可以把“编译在报表数据文件夹”选择打勾,这样报表的jrxml 文件和jasper文件就放置同一文件夹。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.1. IREPORT 入门........................................................................................................................5 3.1.1. 常用工具.........................................................................................................................5 3.1.2. 设置数据源........................ห้องสมุดไป่ตู้............................................................................................7 3.1.3. 新建空报表.....................................................................................................................7 3.1.4. 设置查询 SQL ................................................................................................................7 3.1.5. 设计报表.........................................................................................................................8
2. 安装 .................................................................................................................................................3
4. 提高篇............................................................................................................................................13
4.1. 报表的结构 ...........................................................................................................................13 4.2. 变量、参数及字段 ...............................................................................................................14 4.3. 图形报表 ...............................................................................................................................16
1. 简介 JasperReport 是 Java 语言编写的报表引擎,它能解析.jasper 报表定义
文件,并最终产生面向最终用户的报表界面。 iReport 是一个可视化的报表模板设计工具,使用此工具能方便地对报表进
行可视化设计,设计结果保存成.jrxml 的 XML 文件,并能够把.jrxml 编译 成.jasper 二进制文件供 JasperReport 报表引擎解析、显示。
JasperReport+iReport 报表工具详细开发手册
(V 1.1)
2009-8-10
目录
1. 简介 .................................................................................................................................................3
2.1. IREPORT 安装........................................................................................................................3 2.2. JASPERREPORT 安装............................................................................................................4
5. 技巧篇............................................................................................................................................28
5.1. 在 WEB 中显示数据不分页显示 ........................................................................................28 5.2. 没有数据时仍然显示标题 ...................................................................................................28 5.3. 数字型字段值到字符的转换 ...............................................................................................28
本文档编写是基于以下版本: jasperreports-3.5.2 iReport-nb-3.5.2
4.3.1. 注意事项.......................................................................................................................16 4.3.2. 饼图(Pie) .....................................................................................................................16 4.3.3. 3D 饼图(3D Pie) ........................................................................................................17 4.3.4. 柱状图(Bar).................................................................................................................17 4.3.5. 3D 柱状图(3D Bar)....................................................................................................19 4.3.6. 堆栈柱状图(Stacked Bar)......................................................................................19 4.3.7. 曲线图(Line)...............................................................................................................19 4.3.8. 面积图(Area)..............................................................................................................20 4.3.9. 仪表盘(Meter) ...........................................................................................................20 4.3.10. 温度计(Thermometer)..........................................................................................21 4.3.11. 气泡图(Bubble).........................................................................................................22 4.4. 报表导出 ...............................................................................................................................23 4.4.1. PDF 格式导出 ..............................................................................................................23 4.4.2. EXCEL 格式导出.........................................................................................................24 4.5. 调用 JAVA 代码....................................................................................................................26