ireport开发说明文档Word文档格式.docx
《ireport开发说明文档Word文档格式.docx》由会员分享,可在线阅读,更多相关《ireport开发说明文档Word文档格式.docx(81页珍藏版)》请在冰豆网上搜索。
标准对象库管理(页码…)
支持拖拽
无限制的取消/重做
iReport开发团队是那些来自世界各地的工程师,他们默默无闻的用他们熟练的技术和丰富的经验日负一日的为iReport添加功能排除bugs。
iReport社区:
iReport网址是企业的网址是设立了两个英语社区为大家讨论交流:
Help:
在这里你不但可以提出要求,也可以提出技术上的问题
forum/forum_id=217623
OpenDiscussion:
这个社区是用来发布注释,判定讨论结果和提出新的功能建议的。
forum/forum_id=217622
如果你还是无法解决你的问题,不要着急,我们还有一个特殊的跟踪系统来帮助你:
tracker/group_id=64348&
atid=507164
不保证你的提问能很快得到答复,但是你一定能在几天内收到一个另你非常满意的答复。
这些都是免费的,如果你享有这些,我们还是希望你能够给我们的项目一些资助。
如果你需要一些关于商业方面的支持,你可以写email到.
请将你发现的bug的记录发送到:
atid=507163
在企业网站上,也可以进一步的提出要求(RFE).有能力的也可以提出不足并发表完整的代码。
为了能始终了解关于最新的项目的开发情况你可以将你的邮件地址加到我们的邮件列表中:
所有的iReport团队成员会以往直前地,严肃地,认真地考虑所有来自于用户们的建议,批评和忠告。
鸣谢:
iReport的结晶来自于许多人。
但是一些人正在被我们遗忘,我很荣幸的感谢以下为我们工程作出贡献的一些人:
TeodorDanciu,Alexander,AndreLegendre,CraigBSpengler,DavidWalters,EgonRPereira,ErtanO,GRaghavan,HeikoWenzel,KeesKuip,OctavioLuna,PeterHenderson,VinodKumarSingh,WadeChandler,EricaPastorello以及所有的评论家。
2入门
在这章我们将看到使用iReport之前的必要步奏,如何获得二进制的分发和源程序和如何编译和安装它。
必要条件:
iReport需要SunJava2SDK以上版本;
为了能编译jasper文件就必须安装完整的java2(JDK),不光是(JRE)这个运行环境。
如果你还想编译iReport源代码,你还要安装JakartaAntversion以上版本。
硬件方面,类似于java的环境,iReport也占很多的RAM,所以它也需要只少256Mb的内存和至少20Mb的磁盘空间。
下载:
你可以到SourceForge网站上的企业主页上下载最新发布的iReport
(projects/ireport).可能有几种不同的分类:
这是官方的zip格式的二进制文件。
这是官方的targz格式的二进制文件。
这是官方的包含源代码的zip格式的二进制文件。
表明了iReport的版本号。
每一种都包含必须使用的第三方的库和程序及附加文件,例如模板和一些html格式的基础教程。
如果你想要更多最新版本的源程序,你可以直接地连接CVS库。
但必须要有一个CVS客户端(像CVS,JCVS或者WinCVS)。
如果你有CVS那就执行如下的命令行:
cvs:
/cvsroot/ireportlogin(目前好象无法连接)
andthenallonthesameline…
cvs-z3:
/cvsroot/ireport
coiReport2
这样CVS客户端就可以将iReport的所有文件下载到本地,包括所有的文档,库和所有有用的编译iReport的文件。
就使用其他CVS的用户来说,SourceForge网站也自制了详细的解释用来检出工程。
编译iReport:
这些源中包含一个文件,它是被JakartaAnt用来编译和启动iReport和或用来创建不同类型的工程。
下载解压缩到你指定的目录,例如:
c:
\devel(or/usr/develonunixsystem)。
打开命令提示符或shell,进入你解压的目录和iReport目录:
C:
\devel\iReport-0.3.2>
antiReport
如果这个源完整的存在与目录中,它将被编译进类中iReport就能直接启动。
基本的配置:
如果选择下载了iReport二进制版本的,那就直接将该压缩文件解压缩到指定目录,例如:
\devel(or/usr/develonaunixsystem).打开命令提示符或shell,进入被解压缩的目录,输入iReport目录:
oronunix:
$./
(inthiscase,itshouldbeprecededbya“chmod+x”ifthefileisnotexecutable.)
第一步执行完毕时iReport将创建一个名叫”.ireport”的文件在用户的主目录。
这里的主目录指由自己设置和配置的目录。
如果文件夹不能被创建,这就有可能是解压缩造成的影响而不能够配置成功,这时,你就要自己手动的创建一个目录。
进行下一步之前你需要将文件拷贝到JDK的lib目录下以及iReport的lib目录下。
如果没有这个文件的话在编译report时将会产生一些异常(carriedoutbyusingclassescontainedinthisjavalibrary).在MacOSX系统中文件就不需要拉,因为具有编译ireport所必须的类的文件代替它。
iReport的初始化配置包括:
设置所要查看运行后的文档的格式;
选择语言;
设置编译后的文件目录。
其他的配置说明将在以下进行。
为了继续的进行配置必须打开ireport,然后选择菜单选项中工具选项(menuOptions→Tools.)。
此时将出现选项窗口。
图
选择你最熟悉的语言接下来点“Compiler”选项卡。
2.2图
这个选项卡是用来设置编译后的文件存储目录,默认的目录会在iReport的根目录。
一般情况下是要指定一个有效的目录来保存编译文件。
这个目录也可以是加载报表源时的目录,既然这样就选择“Usethereportsdirectoryforcompiles”复选框。
2.3图
完成以上列出的配置后,接下来我们还要设置报表输出格式和查看XML源所用编辑器。
重启iReport继续设置上图的选项。
创建一个空白报表测试一下我们的设置(menuFile→NewDocument),领悟一下iReport所提供的功能。
之后点工具条上的运行按扭
。
如果你操作的正确,将会有一个保存jrxml文件的提示,相应的一个jrxml文件将被创建,之后会发布出一个预先设置的空白页。
这就意味着你刚才的配置ok拉。
创建JDBC连接:
一个有代表性的关系数据库可以提供最普通的数据源给一个报表。
首先,我们来看看如何设置一个JDBC连接,点菜单DatasourceConnections/Datasources并点窗口的连接列表的new按扭。
此时打开一个新建连接(图)窗口。
在这个面板上填写连接名:
.“Mynewconnection”)并选择正确的JDBC驱动。
iReport支持大部分的JDBC驱动URL格式。
因此你能够自动创建一个URL通过在相应的输入框中填写服务器地址和数据库名。
若要完成连接你就必须输入数据库名和密码用来连接数据库。
如果你想保存密码,那就将“Savepassword”打对勾。
注意:
iReport将密码保存在一个txt文件中,如果你不想保存密码就不要选择“Savepassword”复选框…
点test按扭测试一下连接,不过最好是再保存之前测试。
2.4图
iReport被装入的JDBC驱动只有MYSQL和HSQLDB。
如果在测试期间发现有ClassNotFound异常,很有可能是能被选择的驱动的classpath中不包含JAR或
(ZIP)文件。
不用关闭iReport,拷贝这个JDBC驱动到lib目录下,重试一下;
这个JAR将被重新被iReport加载。
在第十章,我们将深入广泛的解释所有的数据源的配置形式。
测试通过后按保存按钮保存连接。
通过这种方式我创建了一个新的数据源,这样iReport就可以将它作为预置的数据源来使用。
选择菜单中“build→Setactiveconnection”项目。
2.5图
从列表中选择我们的连接按OK按钮(图.那么iReport就会在需要使用数据库时用这个连接(我们想要字段就可以通过SQL查询和打印来创建)。
第一个报表:
现在我们已经安装配置了iReport,并创建了一个JDBC连接数据库,接下来我们将创建一个简单的报表用这个向导。
这个例子以及以后的所有例子我们都用HSQL数据库引擎(HSQLDB),它是一个小型的用java编写的关系型数据库,而且提供了JDBC驱动。
如果用它的话,我们就必须拷贝文件到libs目录(这个文件已经在0.3.2版本之后都包含在发布文件中了)。
为了能了解到更多的关于这个小家伙的信息,就登陆HSQLDB的官方网站为了能设置一个有效的数据库连接我们给出以下例子(来源与本手册);
使用以下参数:
Proprieties
Value
Name
Northwind
JDBCDriver
Url
jdbc:
hsqldb:
/devel/northwind/northwind
Username
sa
Password
表格
配置的最后请设置Northwind作为一个有效的连接(Build→Setactiveconnection)。
选择菜单“File→ReportWizard”.这是一个用来一步步创建报表的工具。
在文本区域输入SQL查询用来充当报表中的数据,例如:
select*fromcustomersorderbycountry
…点Next.这里的分组选项是非常重要的一条。
接下来我们将详细讨论。
iReport将读取customers表的这些字段(图.
选择你需要的字段然后点Next.你会得到一个提示:
你希望从这些被选择到报表中的那个字段用来分组(即便要)(图…
根据这个向导,你最多可以创建四个组。
其他的可以随后来定义(事实上它是可以设置很多组的)。
我们将定义一个简单的组用COUNTRY字段(图..
下一步向导会让你选择一个能被用来创建一个基本报表的模板。
iReport提供了一些非常简单摸板供选择,接下来我将试着创建一个新模板。
目前我们知道的有两种类型的模板:
thetabulartemplates,所有的记录都在同一条表格线内,一个字段后面跟的一个数据。
thecolumnartemplates,这里是将字段按列排列,每列一个字段,下面将是所有数据。
第一个报表选择tabular模板,它是着名的T样式(T的意思就是tabular)。
一但你选择这个模板,那就点next。
之后向导将展示我们操作的结果。
点Finish来创建这个报表,它将展现在iReport的中央区域,等待被执行。
执行之前你得先保存报表源,这样它才能被用来编译创建报表。
该如何编译创建呢你可以点工具条上
按钮(使用连接的运行报表)。
接下来你就点这个带连接的运行报表按钮,此时将会提示你输入你个文件名来保存这个文件。
可以以的文件名来保存。
在控制面板上的下面的窗口将会有一些提示信息。
这些信息就是告诉你发生了什么事:
一个报表被编译,并完成创建,输出“exported”
操作完成后,如果不出以外,这个报表将以缺省的PDF格式展示在你面前,原因是你最初设置输出格式为PDF。
命令行选项:
可能有一些特殊的参数出现在命令行上。
所有的参数不区分大小写的。
特们能被缩写知道最短(例如:
这个命令:
–ireport-homec就可以被指定为–i;
并不是它因为以“i”开头;
命令解释器将认为-i是一个不明确是否是–ireport-home选项).
根据需要Boolean型选项可能被指定用缩写型–opzione和扩展型–opzione=true或–opzione=false。
以下命令可以得到命令选项的列表:
-
或
./-
以下的表格能解释不同的有效选项,它引用0.4.1版本,可能不能完成所有连续的版本。
Option
Description
-config-file<
filename>
指定一个配置文件的文件名。
这个文件不会修改ireport,他将保存一个最终修改后的配置到规范性的目录,用户主目录/.ireport
-ireport-home<
dir>
指定程序目录。
-temp-dir<
指定一个存储临时性文件的目录。
-user-home<
指定用户目录。
默认的是系统的根目录。
-version
用这项可以立即打印出iReport的版本信息。
如果Ant被使用,它就不可能指定这些选项立即执行从命令行,但是它却是必须的,可以修改文件来达到,可添加<
arg>
标签有利于java任务在iReport运行时。
3JasperReports基础概念
JasperReports
iReport的核心就是一个开源的JasperReports库,它是由一个罗马的叫TeodorDanciu的开发者开发。
是目前最有利于创建分布式和强有力的报表的免费软件库。
这章我们就来阐述一下JasperReports的基础概念来加深我们对iReport工作流程的理解。
JasperReportsAPI,为报表定义的XML结构语法,以及在我们程序中需要用的库的详细资料都归档在这本名叫“TheJasperReportsUltimateGuide.”的手册中。
这本书非常的超值。
(目前标价35$).其他可以直接利用的信息和例子可以到官方网站:
两者不相同的是,iReport的分布式依照GPL规范,而JasperReports依照LGPL规范,因此它的局限性很小。
这就意味着JasperReports能够被随意应用于商业,不用购买昂贵的软件许可或呆在家里从网上搜索复杂的开源的许可。
这是用iReport创建一个被用做商品报表的基本原则,事实上,程序仅仅需要用JasperReports库来打印出报表来,仅仅在程序运行时用到它。
由于没有完整的商业许可(指需求以外的许可),iReport只能作为一种开发工具,也不可能成为一个不符合GPL分布式标准的程序的一部分。
报表生命周期:
报表的生命周期和java类的生命周期非常的相似。
Java被一些源文件来组成,也就是它可以依照它的语言规则进行自身的扩展,编写。
这些源代码被编译器编译成扩展名为class的文件。
可以通过接口来实例化或直接加载到内存中调用;
执行期间这些属性将被加强。
同样的,一个报表也是由一个源代码的文件来描述,这个源文件就是由DTD,version0.6.3islistedinAppendixB)来定义的XML标记。
在版本中它的源文件扩展名变成了.jrxml(例如:
JasperReportsXML);
取代了一般的.xml扩展名。
报表的源代码被编译成jasper文件(扩展名是.jasper)。
jasper文件是一种预报表,严密的说就像是java的类被封状成的对象。
Jasper文件通过你的应用程序来加载。
它被添加一个数据源的标记从而创建报表,接着它就能以你想要的格式输出(例如:
pdf或xls)。
因此它可以被定义成两种截然不同的动作:
一个是用于执行在开发期间(设计和编写一个报表,编辑一个jasper源文件),另一个是用于执行在运行期间、
(加载开发期间的jasper文件生成报表)。
Jrxml源代码和jasper文件:
已经解释过,一个报表就由一个被创建的DTD文件定义的XML文件。
这个源文件是由一系列的片段定义,这些片段就是一些关于报表的物理特性,像这个页面的尺寸,版面的布置,以及版块的高度等等;
还有一些逻辑上的特性,像参数,变量,一个为得到被选择的数据的查询的定义等等
简单的说,这个jrxml源代码包含的片段就是下面这些:
Reportmaincharacteristics
Property(0,+)
Import(0,+)
Globalfont(0,+)
Parameters(0,+)
SQLquery(0,1)
Fields(0,+)
Variables(0,+)
Groups(0,+)
Groupheader
Groupheaderelements(0,+)
Groupfooter
Groupfooterelements(0,+)
Predefinedbands
Predefinedbandselements
jrxml文件例子:
<
xmlversion="
"
encoding="
ISO-8859-1"
>
!
--CreatedwithiReport-AdesignerforJasperReports-->
DOCTYPEjasperReportPUBLIC"
JasperReports允许通过两种不同的方法来提供指定的数据来打印:
通过参数和数据源,这主要依赖一个普通的接口JRDataSource.
一整章的内容都是关于datasources,哪儿将解释它如何应用在iReport中和如何能定义一个符合常规的datasources。
(为了能提供一个准确的JasperReports)。
JRDataSource能读取一组被整理在表格中的记录体(行和列)。
JasperReports可能被报表用任何地方,来代替一个直接的datasources,一个JDBC(已经举过例子)能连接任何一个关系型数据库,对指定的一个报表执行sql查询。
如果数据(通过datasources)不足够,或者它需要指定特定的值完成执行,它将很有可能产生一些名值对传送给打印机。
这些对被叫做parameters(参数),他们可以被预先性的传给报表。
通过fillManager能够加入一个jasper文件和datasource在一个JasperPrint对象。
通过实现JRExporter接口的类这个对象能够创建一个真实的打印以你所期望的格式输出。
JasperReports可以由你做主来选择不同格式的输出,用来创建pdf,xls,cvs,xml,html,等文件。
通过JRViewer类能够直接打印你屏幕上所看到。
版本兼容性:
当一个新的版本的JasperReport被发布,通常一些类会有所改变。
这些改进的类特意地定义报表的结构。
所以为了避免在编译报表时因用了不同的库而产生的冲突,JasperReport使每个编译过的jasper文件具有联系性,可以精确的判别库版本并使用老版本进行编辑。
如果你执行一个打印加载一个jasper文件,它不同于老版本支持的文件,就会产生一个错误。
可能是这种情况:
localclass
incompatible:
streamclassdescserialVersionUID=406,localclass
serialVersionUID=600
Errorloadingobjectfrom
InputStream
Causedby:
然而,老的报表源可能被编译用新版本的库,这个源代码被第一次编译:
这是因为锌版本的通常仅仅传入新的标签但又不是必须的,并没有修改XML通常的结构。
移植一个JasperReports到下一个版本下完全可以的。
它能够很快的被执行由于一个叫massivecompiler的iReport插件,它能够编辑所有在同一目录结构下的报表,能安全的拷贝已经现有的jasper文件。
我们将讨论massivecompiler在插件章节。
表达式:
所有的JasperReports的规则被定义通过表达式。
一个表达式符合java语法,即有一个对象和结果。
表达式的例子:
“Thisisanexpression”
newBoolean(true)
newInteger(3)
(($P{MyParam}.equals(“S”))“Yes”:
“No”)
无效的表达式例子:
3+2*5
true
(($P{MyParam}==1)“Yes”:
详细的查看第一个和第二个例子都是无效的,因为他们都是简单类型(int在第一个事例,boolean在第二个事例)。
第三个表达式也无效的,因为采取MyParam参数(之后我们将定义为$P{...}格式)是一个简单类型,它能被比较通过==和一个int型,但结果不是true。
表达式返回的类型是由上下文决定的。
举个例子如果一个表达式恰好终止当一个元素被打印之后,这个返回类型将是boolean型。
同样地,如果我写一个加了下划线的number型字段,返回类型就是Integer或Double。
在表达式中我提到了参数,变量和字段,报表