跟我学JasperReports报表框架——使用Report Wizard创建Web报表的应用示例
- 格式:pdf
- 大小:283.98 KB
- 文档页数:6
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:。
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类这个类的作用是用数据填充报表。
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驱动包的路径:配置并选择数据适配器之后,我们需要指定数据查询的语句,该语句查询出的字段将直接用于报表中的数据字段。
Jasperreport基本介绍Jasperreport与Ireport介绍Jasperreport是报表打印工具,支持pdf、csv多种格式的报表打印。
JasperReport是一个开源的工具包,将JasperReport包加入到项目的classpath中即可开始使用JasperReport包了,从java程序中通过调用包中的类对jrxml文件进行操作,可以完成报表的编译、显示、输出等工作;Jasperreport的报表生成过程,如下图。
如上图所示。
报表模板有两种制作方式:1)利用ireport图形编辑工具,iReport是报表编辑图形工具,编辑完成后输出jrxml文件(XML格式),生成jasper文件(以.jasper结尾);2)直接利用java代码编译生成jasper文件(以.jasper结尾)。
最终要使用的是编译后的*.jasper文件。
Jasperreport支持多种数据源,包括xml、数据库、JavaBean等多种数据源。
Jasperreport基本类net.sf.jasperreports.engine.JasperCompileManager类。
使用这个类的几个静态方法即可完成对报表的编译工作(具体参见api文档)编译完成后可以JasperCompileManager有两种处理方式:1> 返回一个JasperReport对象2> 在.jrxml文件所在的目录生成一个.jasper文件这两种方式是由程序员自己选择的。
不过我比较倾向使用.jasper文件,毕竟报表的结构不是每天都在改动,所以每次重新编译报表并不是很划算。
●net.sf.jasperreports.engine.JasperFillManager类这个类的作用是用数据填充报表。
它可以使用JasperReport对象也可以使用。
jasper文件做为报表模板。
它同样有2中处理方式:1> 返回一个JsaperPrint对象。
JasperReport框架使⽤教程(附带常见空⽩页问题说明)概述与安装使⽤1. PDF报表概述概述在企业级应⽤开发中,报表⽣成、报表打印下载是其重要的⼀个环节。
在之前的课程中我们已经学习了报表中⽐较重要的⼀种:Excel报表。
其实除了Excel报表之外,PDF报表也有⼴泛的应⽤场景,例如货运详情,货运单等。
常见PDF报表的制作⽅式⽬前世⾯上⽐较流⾏的制作PDF报表的⼯具如下:1. iText PDF:iText是著名的开放项⽬,是⽤于⽣成PDF⽂档的⼀个java类库。
通过iText不仅可以⽣成PDF或rtf的⽂档,⽽且可以将XML、Html⽂件转化为PDF⽂件。
2. Openoffice:openoffice是开源软件且能在windows和linux平台下运⾏,可以灵活的将word或者Excel转化为PDF⽂档。
3. Jasper Report:是⼀个强⼤、灵活的报表⽣成⼯具,能够展⽰丰富的页⾯内容,并将之转换成PDFJasperReport框架的介绍JasperReport是⼀个强⼤、灵活的报表⽣成⼯具,能够展⽰丰富的页⾯内容,并将之转换成PDF,HTML,或者XML格式。
该库完全由Java 写成,可以⽤于在各种Java应⽤程序,包括J2EE,Web应⽤程序中⽣成动态内容。
只需要将JasperReport引⼊⼯程中即可完成PDF报表的编译、显⽰、输出等⼯作。
在开源的JAVA报表⼯具中,JASPER Report发展是⽐较好的,⽐⼀些商业的报表引擎做得还好,如⽀持了⼗字交叉报表、统计报表、图形报表,⽀持多种报表格式的输出,如PDF、RTF、XML、CSV、XHTML、TEXT、DOCX以及OpenOffice。
数据源⽀持更多,常⽤ JDBC SQL查询、XML⽂件、CSV⽂件、HQL(Hibernate查询),HBase,JAVA集合等。
还允许你义⾃⼰的数据源,通过JASPER⽂件及数据源,JASPER就能⽣成最终⽤户想要的⽂档格式。
JasperReport使⽤⼼得1. JasperReport 报表⽂件视图化⽣成⼯具iReport。
iReport做为⼀个⽣成JasperReport的视图⼯具,和我们是使⽤的⼤多数报表创建⼯具没有太⼤的差别,都是拖控件,搭出报表的样⼦,和⽔晶报表差不多。
但是iReport有⼀个不同的地⽅,它的存储⽂件是是⼀个.jrxml的⽂件,是⼀个纯xml⽂件,编译后会产⽣⼀个.jasper的⽂件,这两个⽂件,在构建报表的时候都是需要的。
note: 1. 拖完页⾯,编译⼀下,可以发现新建的⽂件中的⼀些错误,例如页⾯中使⽤的值是否在dataSource的Fields中定义。
2. JasperReport 中有⼀个⾮常简单的dataSource:net.sf.jasperreports.engine.data.JRBeanCollectionDataSource可以使⽤。
它有⼀个构造⽅法,可以传⼊⼀个集合来产⽣这个dataSource。
例如:new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{collectionList}) 就是建⽴⼀个以collectionList作为数据的数据源。
在report中我们就可以使⽤$F{Field}(是collectionList<Bean> Bean中的属性)来得到List中每个Bean的数据了。
2.JasperReport ⽣成report// 编译.jrxml⽂件pileReportToFile("testJasperReport.jrxml"), context.getRealPath("testJasperReport.jasper"));// 加载jasperFile reportFile = new File("testJasperReport.jasper");JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());// 填充Report parameters 是⼀个Map,new net.sf.jasperreports.engine.JREmptyDataSource()表⽰我们不需要传⼊是个空DataSource// 将数据和xml组合,⽣成需要的打印⽂件JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new net.sf.jasperreports.engine.JREmptyDataSource()); // 将jasperPrint输出到html页⾯上JRHtmlExporter exporter = new JRHtmlExporter();request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "image?image=");// 设置分页exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, "<br style='page-break-before:always;'>");System.out.println("jasperreports html print stop");exporter.exportReport();附: ireport在服务器中发布出现问题及其解决⽅案 1. 报表打印⽂件(.jasper)⽆法⽣成,有找不对象错误,造成原因为⽂件系统空间不⾜。
JasperReports最终用户手册中文版第四章报表设计jasperreports最终用户手册中文版第四章报表设计第四章报告设计thereportdesignrepresentsatemplatethatwillbeusedbythejasperreportsenginetodeli verdynamiccontenttotheprinter,tothescreenortotheweb.datastoredinthedatabaseiso rganizedduringthereportfillingprocessaccordingtothisreportdesigntoobtainreadyt oprint,pageorienteddocuments.通常,“报告设计”包括数据填充后形成的文件的结构和内容有的其他方面的信息。
这些信息包括将要输出到报表上的各种文本,图像元素的位置,内容,以及要进行的数据计算,自定义计算,分组,操作等信息。
通常情况下,报表设计包含所有与文档结构和视图相关的信息,这些信息将在提供数据时生成。
这些信息涉及文档中出现的各种文本或图形元素的位置和范围、它们的外观、生成文档时应执行的客户计算、数据分组和数据处理等。
一般,“报表设计(reportdesign)”用一种特殊的结构定义在xml文档中(我们会在稍后详细分析),在被填充数据前,这一过程属于jasperreports报表的编辑阶段。
但是“报表设计(reportdesign)”也可以用jasperreportsapi以编程的方式在内存中构造.随jasperreports项目源文件一起提供了一个noxmldesign(noxmldesign)例子介绍了如何直接在内存中创建“报表设计(reportdesign)”,而不用编辑xml文档。
4.1 DTD文件参考用xml文档来编辑“报表设计(reportdesign)”时,jasperreports用它自己内部专用的验证本文件内容的DTD文件。
jasperreport使用介绍(收藏)--大家一起来学JAVA1 简介JasperReport是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,或者XML格式。
最重要的是它是开源的,这给我们带来很大方便,但是文档却要钱,让人不爽。
不过人总要生存,再说,做这么一个好东西,用户总不能一点代价也开源工程—IReport,这是一个的辅助工具,因为JasperReport仅提供了可使用的类库而未提供更好的开发工具,IReport的出现解决了这一难题。
它们配合使用将会更大程度的提高效率。
该库完全由Java写成,可以用于在各种Java应用程序,包括J2EE,Web应用程序中生成动态内容。
它的主要目的是辅助生成面向页面的(),准备付诸打印的文档。
JasperReport借由定义于XML文档中的report design进行数据组织。
这些数据可能来自不同的数据源,包括关系型数据库,,java对象数组。
通过实现简单的接口,用户可以将report library插入到订制好的数据源中,在以后我们将提到有关内容。
其实这是一份JasperReport Ultimate Guide的简单翻译以及我的理解和例子。
在最后,我将描述一个我正在做的工程,将其中用到的相关信息贡献出来。
我这么做是因为当我在学这个类库的时候苦于很少有相关的中文文档,诱惑语焉不详,希望其他人不再受苦。
这个文档将分几次贴出来,与原文档的章节相对应。
这份文档的Word形EMail是****************有什么意见或想法请与我联系。
闲言少叙,进入正题。
2 API概览上图为一个生成报表并打印(导出)的全过程。
我将会把涉及到的重要的类进行一一说明。
Class net.sf.jasper.engine.design.JasperDesign这是一个未经加工的报表实例,供JasperReport Library使用。
这个类可以在JasperReport类库内置的XML解析器对XML report design进行解析处理之后得到。
1.1跟我学JasperReports报表框架——使用Java脚本类程序动态生成JFreeChart图表的应用实例1、实现原理(1)在报表上插入一个图片,赋给它一个变量Chart(为net.sf.jasperreports.engine.JRRenderable)类型。
在图片的Image Expresion处设置$V{Chart}。
(2)如何再编程一个类,该类为变量Chart返回一个JCommonDrawableRenderer对象,该对象包装一个JFreeChart的对象。
(3)最后利用实现自己的JFreeChart对象以产生满足要求的图表。
下面通过具体的代码示例及操作过程的截图详细说明实现方法和对应的程序代码。
2、产生一个报表,名称为“使用脚本类程序生成JFreeChart图表”3、为该报表设置一个名称为Chart的变量类型为net.sf.jasperreports.engine.JRRenderable,Calculate type 为System4、最后为下面的状态5、在该报表中插入一个图片6、设置图片的属性在图片的Image Expresion处设置$V{Chart}、Image Expresion Class设置为net.sf.jasperreports.engine.JRRenderable类型,其他按照下面的图示设置。
在Hyperlink设置为7、为该编程一个类JFreeChartScriptlet.java它可以动态生成一个饼图并赋给前面的Chart变量(请见下面的黑体的代码)。
import net.sf.jasperreports.engine.JRDefaultScriptlet;import net.sf.jasperreports.engine.JRScriptletException;import net.sf.jasperreports.renderers.JCommonDrawableRenderer;import org.jfree.chart.ChartFactory;import org.jfree.chart.JFreeChart;import org.jfree.chart.plot.PiePlot3D;import org.jfree.data.general.DefaultPieDataset;import org.jfree.util.Rotation;public class JFreeChartScriptlet extends JRDefaultScriptlet{public void afterReportInit() throws JRScriptletException{DefaultPieDataset dataset = new DefaultPieDataset();dataset.setValue("Java", new Double(43.2));dataset.setValue("Visual Basic", new Double(10.0));dataset.setValue("C/C++", new Double(17.5));dataset.setValue("PHP", new Double(32.5));dataset.setValue("Perl", new Double(1.0));JFreeChart chart =ChartFactory.createPieChart3D("Pie Chart 3D Demo 1",dataset,true,true,false);PiePlot3D plot = (PiePlot3D) chart.getPlot();plot.setStartAngle(290);plot.setDirection(Rotation.CLOCKWISE);plot.setForegroundAlpha(0.5f);plot.setNoDataMessage("No data to display");this.setVariableValue("Chart", new JCommonDrawableRenderer(chart));}}本JFreeChartScriptlet类继承自JRDefaultScriptlet类,并只需要重写其中的一个方法afterReportInit()方法,同时再将包装JFreeChart对象的JCommonDrawableRenderer类对象赋给名称为Chart的变量就行了。
接上篇接下来需要设置【datasource】下的【report query】:在弹出窗口的report sql query Tab页面的sql编辑区输入sql语句如“select * from scott.emp” 。
完毕点击右下方的ok,所有的emp表中的字段就读入了。
点击工具栏上的,看看是不是表中所有的字段是不是正常的显示了?下面为empno、ename和sal这三个字段在报表中的显示添加text field。
选择【edit】菜单下的【insert element…】菜单项下的【text field】选项。
选择完毕后,在detail区域单击鼠标左键,则添加了一个text field 元素。
我们要在这个元素中显示EmpNO字段的内容。
双击打开此text field的属性页面。
在text field Tab 页中,修改Textfield Expression区中的$F{Field}为$F{EMPNO},如果正确的话,$F{EMPNO}显示颜色改为绿色。
修改Textfield Expression class为你的字段类型。
如下图所示。
编译运行报表即可。
3、为报表添加合计字段合计功能是报表最常用的功能。
下面就为报表添加一个合计字段。
为emp 表中的sal(工资)字段添加一个合计字段。
新建空白报表total,设置datasource下的report query(同上)。
完毕后回到空白报表。
点击工具栏上的图标。
在弹出的total group窗口中点击new。
为新建的group命名为total_sal。
完毕点击ok。
回到报表设计页面,可以看到报表上添加了一个group即有一个total_salheader和一个total_salfooter编辑区。
按照上面2中空白报表的步骤设计报表,初步完成未添加合计字段的报表应该是这个样子的:完毕后点击ok。
下面我们在报表上添加此字段。
选择【edit】下的【insert element…】下的text field,然后点击total_salfooter添加此text field 元素。
1.1跟我学JasperReports报表框架——JasperReport系统程序包中的Demo示例的功能说明1、Demo示例解压jasperreports-0.5.0-project.zip 后目录jasperreports\demo\samples下的例子为其Demo示例,要运行sample下的例子,首先要安装ant,并设置好环境变量。
如ANT_HOME 等,然后到dos方式下,到某一个sample的目录,比如到jasperreports\demo\samples\alterdesign 目录下运行ant 则会编译报表文件,运行ant view 则会展现报表。
2、各个示例的主要功能(1)alterdesign该例子演示了报表编译后,在报表展现的时候如何动态的控制其中的元素。
比如让某一个矩形变色或其他。
(2)antcompile演示如何让ant 来编译(3)chart演示了如何在报表中添加图像,JasperReport是用scriptlet的方式往报表中添加图像,而scriptlet是调用也是开源的jfreechart的Api来生成图形,去jfreechart看一下,该工具能的图形生成能力也很强。
(4)datasource演示了如何在报表中使用各种数据源,能够使用beanarray和beancollection,也可以用自定义的数据源,只要继承了JRDataSource的两个接口,这个能给用户提供非常大的灵活性,报表的数据不用局限于一条Sql语句,也可以使用存储过程,对生成报表中的数据也可以排序,二次检索,等等。
(5)fonts各种字体的演示(6)horizontal演示了水平分栏的报表,演示报表中分了三栏,其中还用到了textFieldExpression,就像if语句的效果来选择输出的内容。
(7)hyperlink演示了各种样式的链接(8)images演示了如何在报表中加入图像以及图像的显示方式。
JasperReport报表概要设计预览说明:预览图片所展示的格式为文档的源格式展示,下载源文件没有水印,内容可编辑和复制JasperReport报表概要设计一.背景概述JasperReport应用方案参照郭总发的“JasperReport应用于java swing 客户端的方案.doc”;二.客户端与服务端调用概要1.客户端、服务端职责:客户端:客户端只考虑、查询条件布局和数据的获取。
服务端:考虑报表以后的升级的易修改性,服务端通过界面提供的数据生成报表,返回,客户端拿到报表对象只是显示即可。
下图是客户端与服务端调用概要图,客户端EJB调用服务方法,服务返回生成好的报表对象。
三.报表设计及流程图客户端主要是查询界面的逻辑处理,报表会经常加入或修改报表,需要经常修改代码,工作量大,重复工作多,所以考虑采用在服务层采用XML配置功能实现,考虑如下:1.采用客户端启动时从服务层一次性读取报表的列表,服务可以用XML存储报表列表,好处是以后新加报表可以在加入一条数据即可,以后修改查询条件或新加报表客户端无需开发,只需要在XML加入新的配置,,包括几个字段:tableNameLoadData =””fieldLoadData =””defaultLoadData=””isCondition =””>…..< childs>……………………………………………………………………….(1)ID:唯一标识,0表示跟节点,就是入口。
(2)Name:报表名称,界面用来显示。
(3)parameters和parameterItem及里面的参数:用来生成界面和界面的关联关系、服务层查询条件等,注:只有配了tableName 和queryField客户端才会把此字段当参数发到服务层。
< parameters >排序” uiType=”dateUI/listUI/selectUI/comboboxUI” relevanceID=”点击此空件后触发的控件id”tableNameLoadData=”表名,用于填充自己控件”fieldLoadData =”表字段,用于填充自己控件”defaultLoadData=”true/fals e加载时下载数据”reportQueryField=”报表查询条件的字段名,为空表示不做为报表查询条件”>< parameterItem>…..(4)is Visible:是否显示.(5)childID:孩子节点的ID,如果为空表示自己就是叶节点.(6)serverReportClass:服务的负责生成报表的类.2.获得报表列表流程图3.生成报表列表流程图:客户端获得服务数据后,通过Name字段作为界面显示的名称,通过childID标识父子关系,如果为空表示自己就是叶节点.4.生成查询界面和数据填充流程图界面生成只跟XML中的parameters和parameterItem相关,通过这里面的属性和依赖关系生成相应查询界面。
JasperReport创建多个子报表2012年9月01日项目中遇到了需要在一个报表中显示多个不同table的问题,不同的table的数据源不同,通过网上查找资料,多方面显示通过子报表可以解决。
但网上资料重复,而且方法各种各样,通过多方面的尝试,结合大家的方面,总结了一个成功的方面。
留下记录,以备后用。
1、首先创建主表,按照一般的步骤来。
2、主表创建完毕后,创建子报拖动Subreport到主表中,然后按照下一步一路默认点下去。
这样就创建一张新表。
3、设置主表中的参数。
在主表的Parameters中添加参数(1)SUBREPORT_DIR注:这个参数是子报表的路径参数,使用相对路径时用到的。
创建子报表默认的一个参数,这里就没有进行修改了。
(2)parameter1注:这个参数就是子报表的数据源,这里是通过javabean绑定数据源的方式,所以Parameter Class选择的是List,网上有选择其他类型的,试了试选择其他类型的我没有成功。
通过这2个参数就是1个子报表需要用到的参数。
如果有n个子报表就创建2n 多个参数。
4、设置主报表模版中的子报表参数。
在主报表中选中子报表,显示属性,相关的属性有4个最重要的属性设置有2个其中Subreport Expression属性是设置子报表路径。
一般新建报表后默认就生成了,不需要修改,但其中的参数部分需要和前面步骤3中设置的路径参数一样。
注:创建多个子报表时默认的参数是一样的,这时就需要修改一下这个路径参数了。
主要属性设置是Connection type:选择为Use a datasource expressData Source Expression:设置为new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{parameter1}) 其中参数部分为步骤3中设置的数据源参数一样。
1.1跟我学JasperReports报表框架——应用JasperReports和iReport报表工具改善应用系统中的数据显示效果1.1.1应用报表改善数据的显示1、在Web开发报表的时候,我们都会碰的这样的问题:(1)统计图和表格混合。
网页中只有表格的数据,缺乏统计图表,浏览数据不够直观。
在客户的强烈要求下添加图表,解决表和图混合一起的问题要编写多个JSP或Servlet,并且还不好解决,还有重点注意图片的链接。
(2)上下翻页,跨页翻页。
报表多页时,上下翻页是个问题。
现在流行的方法都只能解决表数据的问题,报表有图表又应该怎样解决呢?(3)导出电子文档保存。
查询结果(报表)存档问题,特别是在金融行业,他们的一般都会要求统计查询的结果保存起来,一般会要求以Word,Excel等格式下载保存。
你在开发的过程中是否对查询结果做了两套:针对Web显示编写一套代码,针对Word下载又编写一套代码2、常见的报表格式报表是数据统计结果的呈现。
常见的报表格式有表格、数据立方体(多维表)、曲线图、直方图、饼图等等,其中以表格最为常见。
3、JasperReports历史(1)JasperReports由Teodor Danciu于2001年创立那时他接受一项任务,为他参预的项目做报表工具的评估。
他发现现存的方案对他们的项目预算来说都过于昂贵,于是他决定编写自己的报表工具。
后来,这个项目被取消了。
于是他开始在业余时间开发JasperReports,并于2001年9月在注册了这个项目。
不久以后,他就开始收到来自潜在用户的邮件,尽管他还没有提交任何代码。
(2)JasperReports于2001年11月发布了它的0.1.5版从那以后,JasperReports被广泛地使用。
如今,它已是最流行的报表工具之一。
作为JasperReports享有巨大声望的一个证明,用Google搜索java reporting tool,返回的第一条结果就是JasperReports网站。
1.1跟我学JasperReports报表框架——JasperReport报表工具中的主要API功能介绍1、Class net.sf.jasper.engine.JasperReport这个类的实例包含了一个经过编译的report design对象。
生成它的时机是对报表编译之后,但尚未对其填入数据的时候。
编译过程中,JasperReport需要生成一个临时的类文件,用以保存report expression,如变量表达式,文本,图像表达式,组表达式等等。
这个临时的Java Source File是被动态编译的,编译器使用的是JDK中用来执行应用程序的编译器类(compiler class)。
如果tools.jar不在classpath中,编译过程将采用javac.exe来进行后台编译。
编译后所得的字节码保存在JasperReport类中,用来在执行期装填数据(filling the report with data)和给表达式赋值(evaluate various report expression)。
2、Class net.sf.jasper.engine.JasperCompileManager这是一个上面提到的与编译有关的类。
利用它提供的一些方法,你将有能力编译从本地硬盘或一个Input Stream获得的XML report;还可以通过传给JasperCompileManager一个JasperDesign类,来对内存中的report design进行编译?功能很强大。
3、Class net.sf.jasper.engine.JasperPrint当一个报表已经装填好数据之后,这个文档就以JasperPrint类的实例出现。
这个类可以直接用JasperReport内置的viewer进行查看,也可以序列化到硬盘以备后用,或者发送到网上去。
这个类的实例是报表装填过程后的产物,它可以被JasperReport类库中的导出方法导出成各种流行的格式?PDF,HTML,XML等等。
1.1跟我学JasperReports报表框架——使用Report Wizard向导创建Web 报表的应用示例
1.1.1使用Report Wizard(向导)创建报表
1. 设置数据查询
File -> Report Wizard
选择后,将出现下面的对话框,并输入查询语句。
2、选择需要的字段
3、选择报表的布局模板
最后,将产生出下面的风格的报表。
保存该文件
4、编译和预览
(1)编译
选择“建立”的“编译”选项
在编译路径下生成一个jasper文件。
同时和它在同一目录下IReport会自动生成一个文件名为*.java,里面主要是一些报表元素,如Field,Parameters,Variables的定义,以及一些求值表达式。
(2)预览
在“建立”菜单下选择预览模式,然后选择“执行报表(使用动态连结)”。
将产生出下面的结果
报表填充阶段的输出通常是一个JasperPrint对象,如果把它保存在磁盘上,通常以一个.jrprint文件的形式存在。
JasperReport拥有一个内置的查看器,用来查看用内置的XML 导出器(XML exporter)获得的XML格式的报表文件。
这个查看器就是以前提到过的net.sf.jasper.niew.JRViewer------ 一个基于Swing的应用程序组件,用户可以通过继承这个类
来定制自己所需的查看器。