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:。
跟我学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驱动包的路径:配置并选择数据适配器之后,我们需要指定数据查询的语句,该语句查询出的字段将直接用于报表中的数据字段。
跟我学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 的情况下查看这些报表,特别是当这些文档要通过网络发送出去的时候。
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来编译这个文件。
jasperreports中文教程之报表参数
</title>
<columnHeader>
<band height="23">
<staticText>
<reportElement mode="Opaque" x="0" y="3"
width="535"
height="15"
backcolor="#70A9A9" />
<box>
<bottomPen lineWidth="1.0"
try { JasperFillManager.fillReportToFile( sourceFileName, parameters, beanColDataSource);
} catch (JRException e) { e.printStackTrace();
} } } POJO 文件的内 容 C:\tools\jasperreports-5.0.1\test\src\com\yiibai\DataBean.java 如下所 示:
跟我学JasperReports报表框架——利用JDK中的Graphics2D 自行编程实现图表
1.1跟我学JasperReports报表框架——利用Java API中的Graphics2D 编程实现图表的应用实例1、基本的原理在报表上插入一个图片,再设置一个变量chartImage,为java.awt.Image类型。
在图片的Image Expresion处设置$V{chartImage}。
然后再编程一个Scriptlet类,生成自己所需要的柱图、饼图、带图,其它图等等。
当然如果要从数据库中读取数据,可以在这个文件中读取。
将所生成的Image类型的对象赋给变量chartImage。
下面通过具体的代码示例说明实现的主要的过程。
2、设计一个报表、并插入一个Image图片3、添加一个名称为chartImage类型为java.awt.Image 的变量4、为图片设置该变量$V{chartImage}5、编程一个ImageScriptlet类,在该类中自己利用JDK的系统API画图,并将该图赋给chartImage变量import java.awt.*;import java.awt.geom.Arc2D;import java.awt.geom.Ellipse2D;import java.awt.image.BufferedImage;import net.sf.jasperreports.engine.JRDefaultScriptlet;import net.sf.jasperreports.engine.JRScriptletException;public class ImageScriptlet extends JRDefaultScriptlet{java.awt.Image oneChart=null;private int index;private int dataApp[]; //存储每个饼块的启始度数值private int itemPercent[]; //存储每个项目的百分比的int数值private int angle=0;private double dataAll; //存储总和值private double data[]; //存储各个项目的数据值private double dataArc[]; //存储每个饼块的度数值private double doublePercent[]; //存储每个项目的百分比的double数值private Color pieArcFillColor[];private Color imageBGColor=null;private int pieCircleX,pieCircleY, pieCircleRadius;private int imageTotalWidth;private int imageTotalHeight;private String pieTitleText;public ImageScriptlet() {}public void afterReportInit() throws JRScriptletException {imageTotalWidth=750;imageTotalHeight=400;pieTitleText="培训中心2008年业务情况饼图";init();oneChart=getPieImage();this.setVariableValue("chartImage",oneChart);}public void init(){data=new double[7];dataArc=new double[7];dataApp=new int[7];itemPercent=new int[7];doublePercent=new double[7];pieArcFillColor=new Color[7];imageBGColor=new Color(0xF0,0xF8,0xFF);pieCircleRadius=100;pieCircleX=(imageTotalWidth-pieCircleRadius*2)/2;pieCircleY=100;//******** 以下为设置各个项目的用于显示的数据值(实际可以来自数据库表);********data[0]=100;data[1]=60;data[2]=80;data[3]=120;data[4]=180;data[5]=110;data[6]=210;pieArcFillColor[0]=Color.orange;pieArcFillColor[1]=Color.blue;pieArcFillColor[2]=Color.cyan;pieArcFillColor[3]=Color.DARK_GRAY;pieArcFillColor[4]=Color.GRAY;pieArcFillColor[5]=Color.green;pieArcFillColor[6]=Color.magenta;//计算出各个项目的总和的值;for(index=0;index<7;index++){dataAll=dataAll+data[index];}//计算出每个饼块的度数;for(index=0;index<7;index++){dataArc[index]=data[index]*360/dataAll;}//简单的精度计算出各个项目在总个数据值中所占的八百分比数据值for(index=0;index<7;index++){doublePercent[index]=data[index]*100/dataAll;itemPercent[index]=(int)(data[index]*100/dataAll);if((doublePercent[index]-itemPercent[index])>0.5){itemPercent[index]=itemPercent[index]+1;}}//计算出每个饼块递增的次序和启始角度的大小;dataApp[0]=0;dataApp[1]=(int)dataArc[0];dataApp[2]=(int)dataArc[0]+(int)dataArc[1];dataApp[3]=(int)dataArc[0]+(int)dataArc[1]+(int)dataArc[2];dataApp[4]=(int)dataArc[0]+(int)dataArc[1]+(int)dataArc[2]+(int)dataArc[3];dataApp[5]=(int)dataArc[0]+(int)dataArc[1]+(int)dataArc[2]+(int)dataArc[3]+(int) dataArc[4];dataApp[6]=(int)dataArc[0]+(int)dataArc[1]+(int)dataArc[2]+(int)dataArc[3]+(int) dataArc[4]+(int)dataArc[5];}public java.awt.Image getPieImage(){Arc2D.Double arc2D=null;java.awt.Image image = new BufferedImage(imageTotalWidth, imageTotalHeight, BufferedImage.TYPE_INT_RGB);Graphics g = image.getGraphics(); // 获取图形上下文Graphics2D g2d=(Graphics2D)g;/*设置图像的背景颜色并产生一个填充区域*/g2d.setColor(imageBGColor);g2d.fillRect(0, 0, imageTotalWidth, imageTotalHeight);/*画出图形的标题文字*/g2d.setColor(Color.black);g2d.setFont(new Font("宋体",Font.BOLD,25)); //设置标题文字的字体;FontMetrics fm=g2d.getFontMetrics(); //确保文字在图的中央g2d.drawString(pieTitleText,(imageTotalWidth-fm.stringWidth(pieTitleText))/2,50);/*画出图形的各个部分*/for(index=0;index<7;index++){g2d.setColor(pieArcFillColor[index]);arc2D=newArc2D.Double(pieCircleX,pieCircleY,2*pieCircleRadius,2*pieCircleRadius,dataApp[index],(int)dataArc[index],Arc2D.PIE);g2d.fill(arc2D);if(index==6){arc2D=newArc2D.Double(pieCircleX,pieCircleY,2*pieCircleRadius,2*pieCircleRadius,dataApp[index],360-dataApp[6],Arc2D.PIE);g2d.fill(arc2D);}// 显示x轴的各个项目的百分比数值;g2d.fillRect(30+index*100,360,30,17);g2d.setFont(new Font("宋体",Font.BOLD,10)); //设置项目文字的字体;g2d.drawString("业务"+(index+1)+":"+itemPercent[index]+"%",30+index*100+35,375);}// 以下为重画饼图的外圆,线条的颜色为红色g2d.setColor(Color.red);Ellipse2D.Double pieOutEllipse=new Ellipse2D.Double(pieCircleX,pieCircleY,2*pieCircleRadius,2*pieCircleRadius);g2d.draw(pieOutEllipse);g2d.dispose(); // 释放图象对象return image;}}6、编译本示例程序类,并拷贝其*.class文件到报表所在的目录下7、为报表设置该脚本类8、执行后的结果为下面的状态。
JasperReport详解_(1)
JasperReport详解_(1)报表设计基础及JasperReort,JFreeChart简明教程摘要本⽂先从通⽤的⾓度定义了与报表相关的各种概念。
然后介绍了怎么应⽤JasperReport和Ireport设计报表,最后介绍了怎么使⽤JfreeChart⽣成图形报表。
⽂章中出现的很多概念和定义都出⾃作者⾃⼰的思考,没有通⽤性,在阅读时请不必深究它的准确性。
1、什么是报表,什么是报表应⽤程序1.1 什么是报表报表是数据统计结果的呈现。
常见的报表格式有表格、数据⽴⽅体(多维表)、曲线图、直⽅图、饼图等等,其中以表格最为常见。
总结各种报表的共同特征,可以这样来定义报表的结构。
⼀般来说,Report = Title + Page(s) + Report FooterPages(s)表⽰⼀个报表可能有⼀页或多页Page = PageHeader + Content + PageFooterContent则代表真正的数据,它⼀般由若⼲列和若⼲⾏组成。
Content = ColumnHeader + Row(s) + ColumnFooter⼀个报表的结构可以表⽰为下图所⽰的树形:这棵树中的所有叶结点,就构成了报表的实体。
⼀个叶结点⼀般称作⼀个Band,从上到下排列,⼀个Report的组成如下图所⽰:下图是⼀个报表的例⼦。
它有3页。
1.2 计算机上的报表与报表应⽤程序可以利⽤计算机处理数据和界⾯设计的功能来⽣成、展⽰报表。
计算机上的报表的主要特点是动态化。
已经有各种各样的计算机报表设计⼯具,它们⼀般提供格式设计和数据填充等功能。
⼴义地讲,EXCEL、WORD、甚⾄写字板都可以算作报表设计⼯具,但是它们没有定义专门的报表结构,也⽆法实现报表格式和报表数据的动态决定,⽆法实现计算机报表的“动态化”特性,也就是说不能⽤它来开发“报表应⽤程序”,所以它们⼀般不能视为报表设计⼯具。
⽽所谓报表应⽤程序,指的是能够在运⾏时动态地决定报表格式和报表数据的应⽤程序,它必须要实现数据格式和数据内容之间的分离,也就是报表和数据源之间的分离。
JasperReport教程之报表设计
JasperReport教程之报表设计在JRXML模板(或JRXML文件)中的JasperReport都是标准的XML文件,以.JRXML扩展。
所有JRXML文件包含标签<jasperReport>,作为根元素。
这反过来又包含许多子元素(所有这些都是可选的)。
JasperReport框架,可以处理不同类型的数据源。
在本教程中,我们将展示如何生成一个基本的报表,只是通过传递Java数据对象(使用Java Bean)集合传给JasperReport引擎。
最后报表应显示的人的名单的名字和国家。
本章介绍如何设计一个JasperReport。
下面的步骤将在本章中:∙创建一个JRXML报表模板。
∙预览XML报表模板。
创建一个JRXML报表模板创建JRXML文件,该文件是jasper_report_template.jrxml使用文本编辑器,并保存此文件按照我们的环境设置,在C:\tools\jasperreports-5.0.1\test。
<queryString><![CDATA[]]></queryString><field name="country"class="ng.String"><fieldDescription><![CDATA[country]]></fieldDescription></field><field name="name"class="ng.String"><fieldDescription><![CDATA[name]]></fieldDescription></field><columnHeader><band height="23"><staticText><reportElement mode="Opaque"x="0"y="3"width="535"height="15"backcolor="#70A9A9"/><box><bottomPen lineWidth="1.0"lineColor="#CCCCCC"/> </box><textElement/><text><![CDATA[]]></text></staticText><staticText><reportElement x="414"y="3"width="121"height="15"/><textElement textAlignment="Center"verticalAlignment="Middle"><font isBold="true"/></textElement><text><![CDATA[Country]]></text></staticText><staticText><reportElement x="0"y="3"width="136"height="15"/><textElement textAlignment="Center"verticalAlignment="Middle"><font isBold="true"/></textElement><text><![CDATA[Name]]></text></staticText></band></columnHeader><detail><band height="16"><staticText><reportElement mode="Opaque"x="0"y="0"width="535"height="14"backcolor="#E5ECF9"/><box><bottomPen lineWidth="0.25"lineColor="#CCCCCC"/> </box><textElement/><text><![CDATA[]]></text></staticText><textField><reportElement x="414"y="0"width="121"height="15"/><textElement textAlignment="Center"verticalAlignment="Middle"><font size="9"/></textElement><textFieldExpression class="ng.String"><![CDATA[$F{country}]]></textFieldExpression></textField><textField><reportElement x="0"y="0"width="136"height="15"/><textElement textAlignment="Center"verticalAlignment="Middle"/><textFieldExpression class="ng.String"><![CDATA[$F{name}]]></textFieldExpression></textField></band></detail></jasperReport>下面是在上述报表模板主要字段的详细信息:∙<queryString>:这是空的(因为我们传递的数据通过Java Beans)。
JasperReports最终用户手册中文版第四章 报表设计
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文件。
jasperReportStudiojava报表设计(详细)
jasperReportStudiojava报表设计(详细)⼀、环境搭建 在spring-mvc.xml加⼊<!-- jasperReports--><import resource="classpath*:spring-mvc-jasperreports.xml"/>spring-mvc-jasperreports.xml具体配置代码:<beans xmlns="/schema/beans" xmlns:xsi="/2001/XMLSchema-instance"xmlns:p="/schema/p"xmlns:context="/schema/context" xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-4.2.xsd/schema/context /schema/context/spring-context-4.2.xsd/schema/mvc /schema/mvc/spring-mvc-4.2.xsd"><!-- jasperReports报表集成视图解析器 --><bean id="jasperReportsViewResolver"class="org.springframework.web.servlet.view.jasperreports.JasperReportsViewResolver"><!-- 执⾏优先级,值越⼩优先级越⾼ --><property name="order" value="0"/><!-- 处理视图返回 --><property name="viewClass" value="com.silverdata.smart.report.jasperreports.JasperReportsView"/><property name="prefix" value="/WEB-INF/jasper/"/><property name="suffix" value=".jasper"/><!-- 可通过配置此项⽤来过滤是否执⾏此视图解析器 --><!-- <property name="viewNames" value="rpt*"/> --><!-- 报表数据源 --><property name="jdbcDataSource" ref="dataSource"/><!-- 扩展参数 --><property name="exporterParameters"><map><!-- 指定格式报表的内容编码 --><entry key="net.sf.jasperreports.engine.JRExporterParameter.CHARACTER_ENCODING"><value>UTF-8</value></entry><!-- 通过Web访问时图⽚的URI --><!-- <entry key="net.sf.jasperreports.engine.export.JRHtmlExporterParameter.IMAGES_URI"><value type="ng.String">/jasper/image.jsp?image=</value></entry> --><!-- 图⽚⽬录的绝对路径 --><!-- <entry key="net.sf.jasperreports.engine.export.JRHtmlExporterParameter.IMAGES_DIR_NAME"><value type="ng.String">D:\\work\\***\\framework\\tmp</value></entry> --><!-- 是否输出图⽚到⽬录 --><!-- <entry key="net.sf.jasperreports.engine.export.JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR"><value type="ng.String">true</value></entry> --></map></property></bean></beans>jar包需要:<!-- jasperreports --><dependency><groupId>net.sf.jasperreports</groupId><artifactId>jasperreports</artifactId></dependency><dependency><groupId>net.sf.jasperreports</groupId><artifactId>jasperreports-fonts</artifactId></dependency>⼆、jasperreports报表设计步骤1.新建项⽬配置jar包若jar包unbond未找到~检查是否⽬录路径是纯英⽂的~中⽂不识别2.新建报表模版~⼀般中国的报表直接⽤空⽩A4去做3.若要⽤测试数据展现表格配置然后根据需要查询字段表~加⼊测试数据⼀般也不使⽤4.页⾯设计5.配置样式编译java代码部分:开发代码:public ModelAndView apply(ModelAndView modelAndView,@PathVariable("id") Long id) { 注释部分为⼆维码⽣成/*List<Order> list = Lists.newArrayList();Order order;for (int i = 0; i < 100; i++) {order = new Order(i, "供应商" + i, "厦门市" + i + "号楼", i % 2 == 0 ? "厦门" : "周⼝", new Timestamp(System.currentTimeMillis()));list.add(order);}ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();QRCodeUtils.encode("PE12873619284611231213", 100, 100, byteArrayOutputStream);InputStream file = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());Map<String, Object> m = new HashMap<String, Object>();m.put("QRCodeString", "PE12873619284611231213");m.put("QRCode", file);m.put("image", "E:\\ideaWorkSpace\\pipegallery\\pipegallery-operation\\src\\main\\webapp\\WEB-INF\\jasper\\silhouette.jpg");return ReportUtils.toPdf("Silhouette4", m, list);*/List<ApplyDetails> applyDetailsList = Lists.newArrayList();Map<String, Object> m = new HashMap<String, Object>();List<Map> list =materialsIeApplyDetailsService.getAllByDynamicWhere(id);MaterialsIeApply materialsIeApply=materialsIeApplyService.get(id);m.put("APPLICANT",materialsIeApply.getApplicant());//申请⼈m.put("ORDERNO",materialsIeApply.getOrderno());m.put("IEAPPLYTYPE","0".equals(materialsIeApply.getIeApplyType())?"租⽤":"使⽤");m.put("PLANGETDATE",materialsIeApply.getPlanGetDate());//领⽤时间m.put("PLANRETURNDATE",materialsIeApply.getPlanReturnDate());//归还时间m.put("AUDIT",materialsIeApply.getAuditId());//审核⼈m.put("AUDITDATE",materialsIeApply.getApplyDate());//审核时间//(0未提交、1待审核、2已审核、3未通过、4打回、5部分出库、6全部出库、7作废)m.put("APPROVALSTATE", ReturnMaterialsIeApplyString.returnString(materialsIeApply.getApprovalState()));//申请单状态m.put("APPLYDATE",materialsIeApply.getApplyDate());//申请提交时间m.put("REASON",materialsIeApply.getReason());m.put("REMARK",materialsIeApply.getRemark());m.put("AUDITOPINION",materialsIeApply.getAuditOpinion());//审核意见ApplyDetails applyDetails;for (Map map:list){applyDetails=new ApplyDetails(map.get("materialsname").toString(),map.get("suppliername").toString(),Integer.parseInt(map.get("amount").toString()),map.get("remark").toString(),map.get("spec").toString(),"1"); applyDetailsList.add(applyDetails);}return ReportUtils.toPdf("MaterialsIeApply", m, applyDetailsList);}。
JasperReport报表使用方法
public List<Map> getResultList(List<DrivingHistoryDataVO> dataList) {
List<Map> returnList = new ArrayList<Map>();
// 保证记录顺序不变,使用TreeMap
第四部执行编译成jasper文件
1、首先,在用iReport设计报表时将要显示中文数据的地方的属性设置如下:
Font name: 宋体 (中文字体)
PDF font name: STSong-Light
PDF Encoding: UniGB-UCS2-H(Chinese Siplified)
jrxml编译成jasper文件的步骤:
第一步:建立好java实体类(pojo)
第二步:将建立好的java类达成jar包
(此处一定要记得配置classpath读取jar文件)
第三步:设置iRport数据源(javaBeanDataSource),输入完整的全类名(包括包名)
先定义一个功能需求,然后我们展开说明。一个车辆行驶数据分析系统中需要实时获取行驶数据,这需要车载设备来实现。数据上传存储在Web端的数据库中,我们需要从数据库中获取数据来显示内容。
使用JavaBean作为数据源,首先我们要扩展JasperReport的数据源。实现方法很简单,我们定义一个类去实现net.sf.jasperreports.engine.JRDataSource接口即可,覆盖其中的方法。下面给出一个示例。
而问题又出现了,如果这两个字段自动换行了,那么必然把一行上的其他元素都给撑大了,那么还需要对其他元素进行设置。选中其他的所有元素,在属性面板的Stretch Type中选择Relative to Tallest Object就可以自适应到最高换行的元素了,显示效果就正常了。
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等数据源的祖先。
Jasperreport+jasperreport 学习笔记2
接上篇接下来需要设置【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 元素。
JasperReport报表概要设计
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使用说明
一、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文件。
使用jasperReport制作报表
兴明软件DRP开发团队 兴明软件DRP开发团队
基础知识-为什么选用jasperReport+ireport?
不足:
1、文档缺少 2、不可移植 3、运行速度慢 4、可视化设计器不够完善
兴明软件DRP开发团队 兴明软件DRP开发团队
基础知识-jr和ir是什么关系?
jasperReport是报表引擎,用来解析编译xml格式的报 jasperReport是报表引擎,用来解析编译xml格式的报 表设计文件,填充数据,打印、导出、显示。最新版本 1.2.7 Ireport是jasperreport模块文件的可视化设计器。最新 Ireport是jasperreport模块文件的可视化设计器。最新 版本1.2.7 版本1.2.7 注意:jasperreport的版本升级时,ireport也必定升级。 注意:jasperreport的版本升级时,ireport也必定升级。
兴明软件DRP开发团队 兴明软件DRP开发团队
• • • • • • • • • • JRBeanArrayDataSource JRBeanCollectionDataSource JRJpaDataSource JRCsvDataSource JRHibernateIterateDataSource JRHibernateListDataSource JRHibernateScrollDataSource JRMapArrayDataSource JRMapCollectionDataSource JRTableModelDataSource
使用jasperReport制作报表
基础知识 高级进阶 参考资料
兴明软件DRP开发团队 兴明软件DRP开发团队
基础知识-为什么选用jasperReport+ireport?
JasperReport5.6.1编码及Studio使用
JasperReport5.6.1 编码及Studio使用目录目录1.JasperReport编码 (1)1.1.加入Jar包 (1)1.2.生成报表传给客户端 (1)1.3.报表另存为多种格式 (2)2.JasperSoft Studio报表设计器使用 (5)2.1.简介 (5)2.1.1.报表生命周期 (5)2.1.2.界面 (6)2.2.基本使用 (7)2.2.1.配置数据连接(数据适配器) (7)2.2.2.创建新报表 (12)2.2.3.设置查询语句 (15)2.2.4.报表各部分组成 (16)2.2.5.制作明细表 (16)2.2.5.1.添加表头 (16)2.2.5.2.添加字段 (18)2.2.5.3.设定PDF字体 (19)2.2.5.4.设定边框 (20)2.2.5.5.设定栏高 (21)2.2.5.6.设置字段域 (22)2.2.6.参数的使用 (23)2.2.6.1.添加参数 (23)2.2.6.2.程序中传递参数 (24)2.2.6.3.报表模板接收参数 (24)2.2.7.自定义变量的使用 (24)2.2.7.1.顺序号 (24)2.2.7.2.小计 (26)2.2.7.3.合计 (28)2.2.7.3.1.表头合计 (28)2.2.7.3.2.表尾合计 (28)2.3.报表设计器进阶 (30)2.3.1.分组报表 (30)2.3.2.图形报表 (33)2.3.3.子报表 (35)2.3.3.1.制作父报表 (35)2.3.3.2.制作子报表 (36)2.3.3.3.子报表自适应行高 (41)1.JasperReport编码下面详细说明一下如何利用JasperReport实现自己系统中的报表功能。
1.1. 加入Jar包首先在工程中加入核心类包。
解压从官网上下载的压缩包,在dist目录中可以找到“jasperreports-5.6.1.jar”和“jasperreports-fonts-5.6.1.jar”,复制到项目WEB-INF/lib下,加入到Eclipse的构建配置中。
JasperReports入门详细步骤
JasperReports⼊门详细步骤JasperReports报表⽣成的基本步骤:1.扩展名为.jrxml的⽂件为标准的xml⽂件,该⽂件定义了报表的格式和数据构成。
可以通过jasperReports的“黄⾦搭档”iReport以可视化的⽅式⽣成并编辑这个⽂件。
2.jrxml⽂件经过JasperReports API 编译后将⽣成扩展名为.jasper的⼆进制⽂件。
3.可以调⽤JasperReports API针对jasper⽂件进⾏数据和参数的填充,⽣成扩展名为.jrprint的⽂件。
4.调⽤JasperReports API可以将jrprint⽂件最终导出成PDF、Excel、Html等各种格式的⽂件。
下⾯将采⽤iReport + JasperReports ⽣成如下图的PDF格式报表,表格中的数据来源于数据库,是在固定格式报表基础上,由JasperReport填充得到的。
整个报表的⽣成过程需要两个步骤:1.使⽤iReport⽣成规定报表格式和数据构成的jrxml⽂件。
2.调⽤JasperReports API 编译、填充并导出固定格式的报表。
⼀、⽤iReport⽣成报表⽂件(.jrxml)开源⼯具iReport⽤于定义报表的格式,可以从其官⽅⽹站下载/doc/6b5f642be2bd960590c677bc.html /cap3.html本应⽤所使⽤的是iReport-1.2.2-windows-installer.exe 安装程序,启动后,按照向导即可安装(要确认系统中装有1.4版本以上JDK)。
下⾯的操作⼤致分为12个步骤:步骤1:安装成功后启动该程序,将显⽰如下画⾯,选择菜单“File->New Document”新建报表⽂档,可在弹出的对话框选择报表的⼤⼩、版式等。
步骤2:按照默认版式创建报表,选择菜单“Data->Connections/Datasources”指定数据库连接或数据源,在弹出的对话框中单击“New”,并在弹出的对话框中指定数据库的连接参数(驱动类、URL、⽤户名和密码等)iReport通过JDBC 连接数据库,要确认相应数据库的驱动类置于iReport安装路径的lib⽂件夹下。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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:<queryString><![CDATA[]]></queryString><field name="country"class="ng.String"><fieldDescription><![CDATA[country]]></fieldDescription> </field><field name="name"class="ng.String"><fieldDescription><![CDATA[name]]></fieldDescription> </field><columnHeader><band height="23"><staticText><reportElement mode="Opaque"x="0"y="3"width="535"height="15"backcolor="#70A9A9"/><box><bottomPen lineWidth="1.0"lineColor="#CCCCCC"/> </box><textElement/><text><![CDATA[]]></text></staticText><staticText><reportElement x="414"y="3"width="121"height="15"/><textElement textAlignment="Center"verticalAlignment="Middle"><font isBold="true"/></textElement><text><![CDATA[Country]]></text></staticText><staticText><reportElement x="0"y="3"width="136"height="15"/><textElement textAlignment="Center"verticalAlignment="Middle"><font isBold="true"/></textElement><text><![CDATA[Name]]></text></staticText></band></columnHeader><detail><band height="16"><staticText><reportElement mode="Opaque"x="0"y="0"width="535"height="14"backcolor="#E5ECF9"/><box><bottomPen lineWidth="0.25"lineColor="#CCCCCC"/> </box><textElement/><text><![CDATA[]]></text></staticText><textField><reportElement x="414"y="0"width="121"height="15"/><textElement textAlignment="Center"verticalAlignment="Middle"><font size="9"/></textElement><textFieldExpression class="ng.String"><![CDATA[$F{country}]]></textFieldExpression></textField><textField><reportElement x="0"y="0"width="136"height="15"/><textElement textAlignment="Center"verticalAlignment="Middle"/><textFieldExpression class="ng.String"><![CDATA[$F{name}]]></textFieldExpression></textField></band></detail></jasperReport>下面的代码演示了上述jasper_report_template.jrxml文件的编译。
package com.yiibai;import net.sf.jasperreports.engine.JRException;import net.sf.jasperreports.engine.JasperCompileManager;public class JasperReportCompile{public static void main(String[]args){String sourceFileName="C://tools/jasperreports-5.0.1/test"+ "/jasper_report_template.jrxml";System.out.println("Compiling Report Design...");try{/***Compile the report to a file name same as*the JRXML file name*/pileReportToFile(sourceFileName);}catch(JRException e){e.printStackTrace();}System.out.println("Done compiling!!!...");}}模板编译至于下一步,让我们保存上面的文件内容:C:\tools\jasperreports-5.0.1\test\src\com\yiibai\JasperReportCompi le.java并导入baseBuild.xml在为下面的build.xml文件。
baseBuild.xml已经编译和运行的目标:<?xml version="1.0"encoding="UTF-8"?><project name="JasperReportTest"default="run"basedir="."><import file="baseBuild.xml"/></project>接下来,让我们打开命令行窗口并转到build.xml文件放置的目录。
最后执行的命令ant-Dmain-class=com.yiibai.JasperReportCompile如下:C:\tools\jasperreports-5.0.1\test>ant-Dmain-class=com.yiibai.JasperReportCompileBuildfile:C:\tools\jasperreports-5.0.1\test\build.xmlcompile:[javac]C:\tools\jasperreports-5.0.1\test\baseBuild.xml:27:warning:'includeantruntime'was not set,defaulting tobuild.sysclasspath=last;set to false for repeatable builds[javac]Compiling1source file toC:\tools\jasperreports-5.0.1\test\classesrun:[echo]Runnin class:com.yiibai.JasperReportCompile[java]Compiling Report Design...[java]log4j:WARN No appenders could be found for logger(net.sf.jasperreports.engine.xml.JRXmlDigesterFactory).[java]log4j:WARN Please initialize the log4j system properly.[java]Done compiling!!!...BUILD SUCCESSFULTotal time:8seconds正如上文编译的结果,会看到jasper_report_template.jasper得到了语言生成的模板文件在C:\tools\jasperreports-5.0.1\test目录。