JasperReport报表概要设计
jasperreport中文学习入门教程之编译报表设计

jasperreport中文学习入门教程之编译报表设计
jasperreport中文学习入门教程之编译报表设计
我们在前面的章节中产生的JasperReport模板(JRXML文件)。
这个文件不能直接用于生成报告。
它必须被编译成JasperReport的“本地二进制"格式,称为Jasperfile。
在编制我们把JasperDesign对象转换成JasperReport的对象:
接口net.sf.jasperreports.engine.design.JRCompiler编译过程中起着核心的一部分。
这个接口有根据用于报表表达式语言,它可以只要编译器可以实现在运行时计算它被用Java编写的,Groovy,JavaScript的或任何其他脚本语言的几个实现。
我们可以通过以下两种方式编译JRXML文件:
1.提供编程编译。
2.编译通过ANT任务。
JRXML提供编程编译
JasperReports的API提供了一个门面类
net.sf.jasperreports.engine.JasperCompileManager用于编译JasperReport。
这个类包含几个公共静态方法编制的报告模板。
模板的源可以从文件,输入流,内存中的对象。
该jrxml文件(jasper_report_template.jrxml)的内容如下。
它被保存在目录C:\tools\jasperreports-5.0.1\test:。
JasperReport 报表总结

为了开发报表,已经拜读了一大堆的资料,其中大部分是重复的。
可以看得出,国人还是比较热衷于copy&paste的工作。
所以找了一大堆的资料都是相同的,或者可以用一个词来形容,换汤不换药的。
有必要对于jasper Report的学习进度进行一下总结,一来可以更新一下以前的资料中的一些旧得不能再旧的不再适用的东西,二来让后来者可以轻松的上手。
首先,jasperReport是一个以java实现的报表工具,(好像是句废话)。
可以实现多种格式的报表。
再我们先理解一下jasperReport的实现过程。
笔者不再画图,网上到处都是。
1)定制报表格式。
有二种方式,一种就是写jrxml文件,其实就是xml文件,只不过是后缀名不一样罢了。
另一种方式更直接,就是生成一个JasperDesign类的实例,在japsperDesign中自己定义模板。
jrxml文件也是通过一个JRXmlLoad加载过来,转成JasperDesign类的实例。
也就是说写jrxml文件还需要进行解析,加载。
现实中我们使用的报表一般格式比较固定,因而可以通过先使用iReport工具生成模板,再加载解析的方式。
这种方式简单,而且可见性强。
2)填充数据。
在最新版(2007.4.30发布)的jasperReports1.3.3中,支持了很多的格式,包括了对于Hibernate的支持。
填充数据对于我们经常使用的来说,一般是二种方式,一种方式是通过JDBC连接提供数据源,一种就是通过javaBean的集合提供数据源。
当然还有web Service的xml文件提供的。
我的建议是,如果你的程序中的统计直接使用Jdbc就可以完成,那么就使用jdbc数据源的方法,反之,使用javaBean的集合是不错的选择,因为这样不会在意你的数据的来源,你也可以任意处理,比如说,要通过权限检查的数据才在报表中生成的话,就可以过滤到不符合权限的数据。
3)显示或打印。
显示,即将JasperReport生成的文件直接显示出来,打印所使用的方式其实就是生成文件,然后调用打印来对文件进行打印。
跟我学JasperReports报表框架——在Java应用程序中显示所创建的报表

1.1跟我学JasperReports报表框架——在Java应用程序中显示所创建的报表1.1.1在J2SE的程序中(胖客户端方式)显示报表1、所需要的各种JAR包commons-beanutils-1.7.jar、commons-collections-2.1.jar、commons-digester-1.7.jar、commons-logging-1.0.2.jar、itext-1.3.1.jar、jasperreports-2.0.5.jar、jtds-1.2.jar(或者为mysql-connector-java-5.1.6-bin.jar)2、常见API介绍(1)net.sf.jasperreports.engine.JasperCompileManager类。
使用这个类的几个静态方法即可完成对报表的编译工作,编译完成后JasperCompileManager类有两种处理方式:1)返回一个JasperReport对象2)在.jrxml文件所在的目录生成一个.jasper文件这两种方式是由程序员自己选择的,一般采用使用.jasper文件,毕竟报表的结构不是每天都在改动,所以每次重新编译报表并不是很划算。
pileReportToFile()方法,这个方法由三个重载版本,你可以查JasperReport的API文档看到,这里我们仅解释一下其中一个版本:void compileReportToFile(String arg0,String arg1);arg0指事先创建的.jrxml文件的全路径,包括文件名arg1指经过编译后生成的.jasper文件的文件名,当然你也可以写上路径,这样你就可以在固定路径上查看.jasper文件,不过这个文件放在哪儿无所谓,注意这个参数的String 串必须以.jasper结束。
(2)net.sf.jasperreports.engine.JasperFillManager类这个类的作用是用数据填充报表。
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驱动包的路径:配置并选择数据适配器之后,我们需要指定数据查询的语句,该语句查询出的字段将直接用于报表中的数据字段。
Struts中Jasperreports开发的报表系统设计与实现

随着 信息 技 术的 发展 ,报表 已经在 各 个政 府 部 也 就成 了一 个十分 重 要 的 问题 。 文章 介 绍 的是 一个
覃 宇 飞,苗 放 ,胡 俊
( 成都理 工 大学 信息工程 学院,成 都 6 0 5 ) l 0 9 摘 婴:描述一 个 国有 资源 管理 系统 中报 表系统的研 发过 程 , 开 发工具 的选择 ,再到 根据 开发平 台 , 从 整个 系统 框架的选择 和设 计 ,以及 用所选报 表开 发工具 来研 究并 最终开 发 出满足 需求 的报 表 系统 。在项 目 开 发过 程 中主要 对 Js erp r 产生 报表 的机 制及 数据 源 的配置进行研 究,并 配合 l p r对报 表 ly u 进 ap r ot e s r ot e ao tFra bibliotek维普资讯
1 5桎 I I
V0I1 .5 N0 1 .l
团固
推与用 广应
芟 编 :10 -4 1( 0 6 1 0 30 0 585 2 0 )1- 3 3 0
Srt中 Jserp r 开发 的报 表系统设 计与实现 t s apr ot u e s
收 稿 日期 :2 0 -53 0 60 - 1
] 公司 扮演越 来越重 要 的 角色 ,报表 系统 的 开 发 为 成 都 市 财政 局服 务 的 在 线 的 国 有资 源 管理 系统 , 和 本 系统 基于 J E 2 E MVC模式 的 Srt,为 B S结构 。 tus / 主 要 讨论 系 统 中使 用 J s e Re o t 开 发报 表 的 部 a p r p rs
跟我学JasperReports报表框架——利用iReport工具管理Web报表的应用示例

1.1跟我学JasperReports报表框架——利用iReport工具管理Web报表的应用示例1.1.1利用iReport工具操作报表1、编译报表由于Jasperreport在运行时需要的就是一个*.jasper后缀的文件,编译过程其实就是把*.jrxml后缀的文件生成*.jasper后缀的文件。
(1)有关的菜单(2)编译过程中的状态输出(3)编译后所产生出*.java程序和*.jasper后缀的文件2、执行报表Jasperreport提供了两种运行的方式-------静态运行和动态运行,动态运行是带数据源的运行,比如带数据库运行。
前者就是静态文本运行,和数据源无关。
因此,在静态运行方式下,如果报表中出现和数据源有关的对象,则以null显示。
(1)静态运行的菜单(2)动态运行的菜单最好采用动态连接(前面已经设置了动态连接),从而能够动态地获得数据库表中的数据值。
将出现下面的结果3、预览显示报表在iReport中提供了JRViewer的预览显示方式,JRViewer是直接以C/S方式作为报表的输出格式,在JFrame框架下输出。
Jasperreport提供默认的JRViewer输出类,这是iReport 自身带的PDF格式预览。
选择其菜单然后再选择“执行报表(使用动态连结)”,将出现下面的结果4、导出为其它格式的报表iReport的出格式可以支持以下几种:PDF、HTML、CSV、JA V A2D、Excel、纯文字等形式。
选择其他格式的预览,系统会以这种格式保存到磁盘中。
保存位置读者也可以选择,在iReport菜单栏中选择Options,在其中选择Compiler标签,选择编译好的文件以及各种形式的报表保存位置。
在一些应用程序环境下,将JasperReport生成的文档从其特有的格式导出到其他更为流行的格式如PDF,HTML是非常有用的。
这样一来,其他人就可以在没有安装JasperReport 的情况下查看这些报表,特别是当这些文档要通过网络发送出去的时候。
java报表方案

java报表方案随着信息技术的发展,报表在企业的决策分析、业务管理和数据展示中发挥着重要的作用。
而Java作为一种高度灵活的编程语言,也为报表的生成和展示提供了丰富的解决方案。
本文将探讨几种常见的Java报表方案,分别是JasperReports、POI和BIRT。
一、JasperReports报表方案JasperReports是一个开源的Java报表生成框架,它提供了强大的报表设计和生成功能。
使用JasperReports,可以将数据从各种数据源读取出来,然后通过定义报表模板和样式进行格式化、整理和展示。
最终,可以将报表输出为PDF、HTML、Excel等多种格式。
JasperReports的核心是报表模板,它是使用XML定义的布局文件。
通过在布局文件中添加元素,设置数据源和样式,我们可以设计出丰富多样的报表。
而在应用程序中,我们可以使用Java代码来填充数据,并将数据源与报表模板进行绑定,完成报表的生成和展示。
二、POI报表方案POI(Poor Obfuscation Implementation)是Apache软件基金会下的一个开源项目,提供了Java操作各种Office文档的API。
其中,HSSF用于操作Excel文件,XSSF用于操作Excel 2007及以上版本的文件。
通过POI,我们可以使用Java代码来读取、创建和修改Excel文件,从而实现报表的生成和展示。
可以将数据逐行逐列地写入指定的单元格,设置字体、颜色、边框等样式,甚至可以插入图表和图片。
最后,将数据保存为Excel文件,就得到了我们所需的报表。
三、BIRT报表方案BIRT(Business Intelligence and Reporting Tools)是一个开源的商业智能和报表工具,由Eclipse基金会开发和维护。
BIRT提供了一套完整的报表设计、生成和展示功能,并且易于集成到Java应用程序中。
使用BIRT,我们可以通过可视化界面来设计报表模板,其中包括布局、数据源和样式。
jasperreports报表(实例)

jasperreports报表(实例)1.建立数据库联线。
2.由sql語法取出資料,准备好传入的 parameters。
3.將parameters及取出的資料傳入Jasper中。
會由 .jasper檔產生出 .jrprint 檔。
4.再由 .jrprint 檔產生出 .pdf的目的檔。
//建立连线方法public Connection createConnection(){Connection conn;try{String driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";String url="jdbc:microsoft:sqlserver://10.0.0.151:1433;DatabaseName=Northwind"; Class.forName(driver);conn = DriverManager.getConnection(url, "sa", "sa"); //建立连线conn.setAutoCommit(false);return conn;}catch(SQLException ex1){System.out.println("建立连线錯誤="+ex1.toString());}catch (ClassNotFoundException ex2){System.out.println("建立连线錯誤="+ex2.toString());}return null;}//关闭资料连线public void CloseConnect(Connection conn){try{mit();conn.setAutoCommit(true);conn.close();}catch(Exception e){System.out.println("连线关闭错误="+e.toString());}}//建立PDF輸出public void createPdfReport(){String fileName="";String strDate="";String sql="";//取得今天日期Calendar cal=Calendar.getInstance();cal.setTimeInMillis(System.currentTimeMillis());strDate=String.valueOf(cal.get(Calendar.YEAR))+"-";if(cal.get(Calendar.MONTH)<9)strDate+="0";strDate+=String.valueOf(cal.get(Calendar.MONTH)+1)+"-";if(cal.get(Calendar.DATE)<9)strDate+="0";strDate+=String.valueOf(cal.get(Calendar.DATE));Map parameters=new HashMap();parameters.put("rptToday",strDate); //傳入的parameters引數sql =" select CompanyName ,ContactName , ";sql+=" ContactTitle , City , Country ";sql+=" from Suppliers ";sql+=" where ContactTitle like '%Sales%' "; //在此試捉出與Sales有關sql+=" order by Country , ContactTitle ";Connection conn = this.createConnection(); //建立資料庫連線try {Statement stm = conn.createStatement();ResultSet rs = stm.executeQuery(sql);fileName = "D:\\iReport\\iReport-0.4.0\\Work\\TestiReport.jasper"; JasperFillManager.fillReportToFile(fileName,parameters, newJRResultSetDataSource(rs));fileName = "D:\\iReport\\iReport-0.4.0\\Work\\TestiReport.jrprint"; JasperExportManager.exportReportToPdfFile(fileName);}catch (Exception ex) {System.out.println("Error : "+ex.toString());}finally {CloseConnect(conn);conn = null;}}由createConnection、CloseConnect 及createPdfReport 这三个方法,即可产生出一個 PDF 档。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JasperReport报表概要设计
一.背景概述
JasperReport应用方案参照郭总发的“JasperReport应用于java swing 客户端的方案.doc”;
二.客户端与服务端调用概要
1.客户端、服务端职责:
客户端:客户端只考虑、查询条件布局和数据的获取。
服务端:考虑报表以后的升级的易修改性,服务端通过界面提供的数据生成报表,返回,客户端拿到报表对象只是显示即可。
下图是客户端与服务端调用概要图,客户端EJB调用服务方法,服务返回生成好的报表对象。
三.报表设计及流程图
客户端主要是查询界面的逻辑处理,报表会经常加入或修改报表,需要经常修改代码,工作量大,重复工作多,所以考虑采用在服务层采用XML配置功能实现,考虑如下:
1.采用客户端启动时从服务层一次性读取报表的列表,服务可以用XML存储报表列
表,好处是以后新加报表可以在加入一条数据即可,以后修改查询条件或新加报表
客户端无需开发,只需要在XML加入新的配置,,包括几个字段:
<reportList>
<report id=”” name=”” isVisible=””serverReportClass=”class”>
<parameters>
<parameterItem id=””uiType=””relevanceID=””
tableNameLoadData =””fieldLoadData =””defaultLoadData=””
isCondition =””>
</parameterItem>
<parameterItem>…..</parameterItem>
</parameters>
< childs>
<childID><childID>
<childID><childID>
</ childs>
</report>
<report>
……………………………………………………………………….
</report>
</reportList>
(1)ID:唯一标识,0表示跟节点,就是入口。
(2)Name:报表名称,界面用来显示。
(3)parameters和parameterItem及里面的参数:用来生成界面和界面的关联关系、服务层查询条件等,注:只有配了tableName和queryField客户端才
会把此字段当参数发到服务层。
< parameters >
<parameterItem id=”控件唯一标识,此字段为数字,界面顺序从小到大
排序” uiType=”dateUI/listUI/selectUI/comboboxUI” relevanceID=”点击
此空件后触发的控件id”tableNameLoadData=”表名,用于填充自己
控件”
fieldLoadData =”表字段,用于填充自己控件”
defaultLoadData=”true/false加载时下载数据”
reportQueryField=”报表查询条件的字段名,为空表示不做为报表查询
条件”>
</parameterItem>
< parameterItem>…..</ parameterItem>
</ parameters >
(4)is Visible:是否显示.
(5)childID:孩子节点的ID,如果为空表示自己就是叶节点.
(6)serverReportClass:服务的负责生成报表的类.
2.获得报表列表流程图
3.生成报表列表流程图:
客户端获得服务数据后,通过Name字段作为界面显示的名称,通过childID标识父子关系,如果为空表示自己就是叶节点.
4.生成查询界面和数据填充流程图
界面生成只跟XML中的parameters和parameterItem相关,通过这里面的属性和依赖关系生成相应查询界面。
5服务层生成报表以及数据库链接流程图。
四.外部接口
1.获得报表列表对象
Public Map<String , ReportInfo > getReportListMap()
参数:无
返回值:Map<String ,ReportInfo>
(1)String:报表ID。
(2)ReportInfo:报表列表对象,与XML字段相匹配。
2.填充控件数据方法
public List<FillComponentInfo> get FillComponentInfoList(List<ConditionInfo>)
参数:List<ConditionInfo>:参数对象列表。
Class ConditionInfo{
String reportID,//报表ID
String parameterItemID,//参数ID
String condition//查询条件
}
返回值:List<FillComponentInfo>:用来填充界面控件数据对象。
Class FillComponentInfo{
String name;//空间显示的名称
Object object;//库表直正的数据,可用来用来做查询条件
}
3.通过查询条件生成报表对象
public JPanel getReportPanel(List<ReportQueryInfo>)
参数:List<ReportQueryInfo>:查询条件列表
Class ReportQueryInfo{
String reportID,//报表ID
String parameterItemID,//参数ID
String condition//查询条件
}
返回值:JPanel:生成好的报表对象面板,客户端直接用来显示,这样SERVERIF 中不用载加JasperReport JAR包了。