jaspersoftstudio中小写数字怎么变成大写

iReport是一个能够创建复杂报表的开源项目,它100%使用Java语言编写,是目前全球最为流行的开源报表设计器之一。

由于它丰富的图形界面,你能够很快的创建出任何一种你想要的报表。

以下是iReport一些比较突出的功能:

? 拖拽式,所见即所得的报表编辑器;

? 多样的向导来简化复杂的报表设计任务;

? 超过30个排版和格式化工具;

? 用户自定义数据源;

? 无限次数的撤消/重做;

? 内置图表支持:超过20种的图表支持。并可扩展;

? 国际化:集成超过15种语言;

? 报表模板与报表库样式管理;

在本章中我们将介绍iReport运行时所需要的环境、如何下载iReport以及如何在我们的系统中安装使用。



第一个可以显示返回多少条记录,第二条显示记录的条数。

有时提供的JRDataSource 并不能完全的满足它的需要。在这些例子中,它可能自治的写一个新的JRDataSource。这个操作并不复杂:事实上所有的类都实现接口JRDataSource(表)

or PageInit)的关键字after或者before形成的。这些方法map都能运用于脚本。他们概括如下表。

在报表初始化(也就是所有的变量初始化之前)之前调用。

所有的变量初始化之后调用。

创建一个新页时,所有变量有重设类型“page”被初始化之前调用。

创建一个新页时,所有变量有重设类型“page”被初始化之后调用。

被调用当一个新列被创建时,所有变量重设列类型“column”之前,但如果这列已经被添满这个时间将不发生。

被调用当一个新列被创建时,所有变量重设列类型“column”之后,但如果这列已经被添满这个时间将不发生。

当一个新组<x>创建时,所有的变量有重设’group’且组名“<x>”被初始化之前调用

当一个新组<x>创建时,所有的变量有重设’group’且组名“<x>”被初始化之后调用

在detail band 被打印之前和所有变量新赋值时调用。

在detail band 被打印之前和所有变量赋当前值时调用。

组(如果要显示在报表上的话)能被存取通过属性groups,一个JRFillGroup数组。

如果我们需要为某些报表创建脚本的话,我们可以使用iReport运用它。

这个例子中类实现了脚本,将被iReport完全运用。我们可以不使用脚本通过设置报表属性窗口(图12.1)或者指定一外部类(已经编译且放到classpath中)。在这个例子的最后,如果这个类被修改和重新编译,iReport将不可能使用我们最近编译的版本,取决与java类装载器,类在内存中的缓存。

如果脚本已经运用与iReport中,当报表被编译,一个和报表名字一样的新类,后缀是“Scriptlet.java”的文件被创建。例如,如果你有一个test报表,生成的脚本文件的名字就是testScriptlet.java.。

代替他们继承的是一个名叫IreportScriptlet的高水平的类,它在it.businesslogic.ireport包。除了这么多方法来处理报表之外,一个新类可以提供一些有用的特性来处理这一连串的数据(查看14章);其他的特性将在未来的iReport版本中添加进去。请注意,如果你想用iReport提供的图表,你得用内在支持的脚本。

在iReport中可以通过选择菜单“View → Scriptlet Editor”来修改脚本。脚本源文件是独立与主报表源文件的,所以你需要在每次改变它之后按 “Save”按钮保存它(查看图12.2)。

这个编辑窗口显示了脚本的所有方法/事件,在表单的上面的选择框中。左边显示了所有和脚本代码有关的java对象。双击设计对象,显示相应的代码。可以插入import标识,脚本中新的方法和类成员,选择“<imports andglobal declarations>”项从选择框中。大多数存取或方法使用表达式插入到脚本中。假设一个例子,你需要打印罗马符号的数字(I,II,III,IV,...)。在这个例子中,就可能要添加一个方法到脚本中,用来将整数转化成用罗马符号写成的数字字符串。就像这样:

这个语法就是用来转化的,调用这个方法插入到脚本中:

在这个例子中,我们假设这个类:

当报表和脚本一起被编译时,脚本被编译保存到和用来编译报表的jasper文件相同的目录。iReport将这个目录添加到classpath中作为确省的。以这种方式脚本类也将能看到从java和报表中。然而,当报表被配置(就像web

iReport中最有用的工具之一就是使用报表模板wizard来创建报表,一种pre-built模型作为基础来使用。这章我们将介绍如何建一个通俗模版和如何添加他们到那些已经使用的。

一个模版是一个正规的jrxml文件。当创建写报表时用到这个向导,jrxml文件和被选择模版被加载和修改依照用户的选择。这儿有两种类型的模版:columnar tabular 类型。模型创建一组线为每个单独的记录成为静态文本,显示文件名,而textfield显示字段值(图13.1)。

二选一,tabular类型显示所有的记录像表一样(图13.2)。

像我们说的那样,模版是jrxml文件(扩展名是简单的xml),他们被加载到templates目录。iReport承认这个名字,如果一个文件包含columnar或tabular的模版:如果一文件名以T结尾,将被用作tabular,如果以C结尾将被解释为columnar。

以下是iReport加载的模版列表:

这个向导允许4组以上的创建 (每组的 GroupHeaderGroup Footer是相互关联的).这些组将被创建用一个加长的完整的文件仅仅如果在向导执行期间用户用一个或多个标准来分组数据。用这个向导你只能选择一个字段名作为标准。

footer显而易见。Columnsband是隐藏的(因为columnar 报表中的这个band没用),detail有静态的文本标签作为模版的标签,以便每个预备字段就像图13.1,textfield包含真正的字段。Text(或者textfield形式的表达式)依照简单的向导规格关联到text元素,具体的说就是每个组可以包含许多你想要的图形元素和包含简单文本的静态文本元素:

n表示文本元素被放置的地方的组的号,textfield元素包含以下简单的表达式:

这个元素用组表达式包含值。

Detail必须包含最少的文本元素:

向导复制这两个元素,创建和选择的报表字段一样多的静态text/textfield对。

所有其他的bands能包含任何元素;这些bands在文件从模板生成时将被复制。

一旦一四个组。他们有column header,需要插入将带的文本来使用作为模型为columns labels。

Templates不可能被编译,因为在textfields中这些表达式不是有效的java表达式。

所以,让我们看看如何创建一个通用模板(custom template)。最简单的方法就是打开一个现有的模板,选择一个和我们想法接近的。这时我们就可以编辑报表以我们喜欢的方式,改变现有的元素属性或添加和删除其他元素。

为了使用这些模板,你必须放它到templates目录。记着用.xml作为文件后缀。就像图13.5那样命名文件名testC.xml 。记着在写后缀之前将C或T作为文件名的最后一个字符。

如果每件事都ok,通过执行向导,就能看到新的模板在columnar报表模板列表中(图13.6)。

然而你可能已经看到了,我们的新custom template没有预览。可能只有查看一个最大150x150像素的gif格式的图片。(这个例子中是testC.gif)。

图13.7向导窗口显示了事先的图片为我们的新模板。这个事先图片来自于报表创建时的一个屏幕截图。

模板的使用相对而言提高了报表开发的效率,通过共享图片。

如果你开发了一非常久经世故模板,你想共享它给其他的用户,你就可以将它上传到iReport网站上。

JasperReports不是天生就支持显示图表的:他们被单独的生成,用一个或多个java open-source库来生成图表和作为一个图形元素来显示图片。这个想法非常的简单,然而制作图表在run-time就需要非常好JasperReports 设计技术。需要用脚本来收集显示在图表上的数据。

使用0.4.0版本,iReport有一个无返回值的图表工具。用这个工具就可以通过配置主要的属性和查找数据来打印图表,更加的简单化。图表的创建就完全依靠一个名叫JFreeCharts(0.9.21版本)的java open-source库,它是由Object Refinery Limited的David Gilbert开发的,仅有少数的图表属性,但可以创建一个清晰的报表。

这段我们就来学习chart工具一步一步的创建一个包括3D饼图表,然后我们分析所有的chart管理的细节。

创建新的空白文档,打开查询窗口并输入:

这个想法是制作一个不同国家的销售图表。确定我们的查询ok:iReport将注册选择的字段。拖拽他们到detail中。(图14.1)

iReport将提示你是否需要内部脚本处理:你选择是。从图表窗口选择饼图并按ok按钮。你将看到图14.2的情形。

接下来配置图表,打开元素属性窗口(双击元素),移动到“Chart”选项卡上,选择“Edit chart properties”按钮。

将看到图表管理窗口(同时显示图表元素创建,图14.5)。

这个窗口由三个选项卡组成:Chart type,DataChart details. 第一个可以选择图表的类型:每个图表需要组织级别数据;级别需要通过chart information选择框中列出来的图表。

警告!每次选择不同的图表类型,那么插入到detail选项中data和chart都将被覆盖掉。

这个例子中我们需要标签(Labels)的级数和一个级数值(Serie1)。

移动到Data选项卡。你将看到两行用来输入这两个级的名字,以便满足已选图表的需要(图14.6)。

有许多方法可以创建series。这时我们就用最简单:我们许可iReport管理它为我们。选择“Report series”按钮连接到报表的series管理窗口(图14.5)。

为了用表达式编辑,在表达式编辑上点鼠标左键选择“

警告修改了图表,保存文件和并开始报表用按钮。结果显示在图14.9。

Series表示一些由字符串或数字值组成的一组值。每个图表需要两个或多个数据的series以便更形象。当你选择图表类型(图14.5),窗口底部的表单可以指定已选择的的图表的series。如果你需要一个饼图(一种图表类似于饼的,我们在先前段落中看到的),需要两个series,分别是LabelsSeries1:这个表单包含了不同图表“片”的标签,后面的值表示片。通常当series的标签是“Labels“时,iReport期望series被composed通过设置string对象,另外还有numeric对象(像double或integer)。所有的series关联到同一个图表,并有同一个元素号码。

Series是一个简单的java vector(java.util.Vector)。它可能让iReport自动重建一个或多个series(查看前一段)通过脚本;如果你想更多的控制series(例如当你想创建图表在报表的不同地方),可能要手工的来管理,通过使用IReportScriptlet类的一些方法来放置series。

getSerie方法返回对象,它里面包含了由空字符串联起来的字符串内容。图14.10显示了使用getSerie的例子:每次迭加期间,series对象和和包含在里面的值被打印出来。

自动series是被iReport完全的管理。仅仅需要用户做的一件事就是定义你想生成的series的值的表达式。例如你想收集到值假设通过一个字段,那么series的表达式就应该是这样的:

前一个方法允许你添加一个值到指定的series,后一个方法允许你删除series包含的所有的值。

这两个方法都返回boolean对象的值为false。在JasperReports中不可能执行任意的没有用脚本的java指令(像需要填充series的)。然而,下面我们将介绍一个比较游泳技巧来避免这种局限性。这个想法就是在报表中插入一个假的元素,它将永远不会被打印:在这个元素的“printWhenExpression”将执行返回对象值是false的代码。这儿是一个可能的表达式:

这个结果是一个值为false的boolean对象,但是当你用方法添加一个新的元素到“TEST”series时,将被初始化。Manualseries没有在任何地方被公告;他们被创建了,如果不存在,在第一次运行方法。

现在,让我们看一个简单的例子来模仿这种automatic series的手动机制;创建一个空白文档并设置查询SELECT * FROM ORDERS;

表ORDERS有不同的字段,我们想收集记录中的SHIPCITY字段的假值,并保存名为“TEST”的series的顺序。在detail中插入一小行(line元素),将元素的PrintWhenExpression写入。

选择属性以便JasperReport在没有插入line元素时正常运转。

在summary插入一个text元素,那儿将表示已经创建的series。就这样做,用这个表达式为被指定为“TEST”的series的打印:

结果将是一个空白的detail在报表的最后,所有的城市列表将按照已选择的顺序打印。

footer),那么series也就不同了(具体来说就是它被composed通过每页最后一行的元素)。

除非允许准确控制当添加元素到series时,用这个表达式加这个值在这种情形下,

考虑一下下面的表达式例子:

Series被识别为简单的字符串,series号也是任意定义的。

“ghost”元素能欺骗addValueSerie方法的执行来重设series的值,通过调用方法。

这些调用被引见在表达式编辑器的规则中(图14.11)。

iReport允许管理六种不同类型的图表,他们中的每一中通过一些属性来定义,这些属性中的一些能定义所有的图表类型,另一些是各自的特性。

如果series表现数据来画一个图表,这些属性可以修改它的样子,可以在图表属性窗口(图14.12)的“Chart Details”选项卡来修改。

以下是对所有图表的通用属性的概括。

图表的像素宽度,通常也是元素的宽度

图表的像素高,通常也是元素的高度

表示图表图象质量的要素:预置值是2,也就是图表图片的高度和宽度都为2。

图表的标题,如果不指定,图表就没有标题

图表的副标题,如果不指定,图表就没有副标题

依照图表确定标题的位置;能值是: Top, Bottom, Left和Right和显示图象的位置:

图表的背景色(图表轴之间的扁平区域)

指定是否显示tooltip,这是一个****的标签用来显示图表点的值(或者是用来说明饼图的薄片)

饼图是最简单的图表在iReport中,它可以形象化的用数字表示series()用series标签()。它没有除了公共属性以外的特殊属性。

3D饼图和饼图是一样的,只是使用了三维效果。

表示饼图的高度值(图14.14使用的值是0.2)

图表的透明度(图14.14使用的值是0.33)

在iReport中除了饼图(简单和3D),其他所有图表都使用CategoryDataset数据结构,它是以种类组成的一组series值。为柱状图表,也为其他图表,需要三级值:, 和。他们被解释以下面的方法:每个和series相关的作为同一类别。如果你仅仅想要一组值,series是一样,而类型是变化的。

如果你保持category的数量和改变series,你将有仅仅一个标签(category值)和一种颜色为每个series:

Bars方向;以前例子中预先设置的值是vertical,这儿是一个水平方向的例子:

图表的透明度(适合具有彩色背景)

Bar3D图表和Bar的特性一样,除了具有三维外表。

和柱状图一样,每个series有相应的颜色,线在“categories”没有有意义数字时被断开。

Line chart和柱状图有一样的附加属性。

最后一个是区域图。它和Line chart工作原理一样,但X轴和线之间的区域被完全的涂上颜色。通过适当的选择Foreground Alpha属性,可以使图表非常的独特。

此时iReport管理JFreeChart的可能性很小:图表的特性将在未来发布的版本中管理的越多越好。

它可能扩充iReport的功能依靠plugins,外部的应用程序模型设计来执行多方面的任务,比如安置一个元素用特殊标准,或者将编译的jasper文件放到BLOB数据库中。

每个插件被创建通过继承抽象类it.businesslogic.ireport.plugin.IReportPlugin和写一个XML文件包含插件展开的指示。这个类必须添加到classpath中,XML文件也必须放到iReport根目录下plugin目录下。所有的XML文件在这个目录被处理来启动相应的插件。

插件结构XML文件,使用展开的描述符,是很简单的(这儿是DTD描述他们的标记)。

class  是实现插件的java类;它必须放到和所有必须的类一样都添加到classpath中;如果需要一个jar来运行插件,你还得把它放到iReport的lib目录下;

hide  如果设置为true,这个属性能被隐藏在plugin中(将被隐藏在所有和插件有关的菜单入口);

要卸载插件,只要删除plugin目录下的XML文件即可(或者改变它的扩展名,只要和.xml不同就可以)。

你已经看到了,仅仅有一个抽象方法call。事实上,configure方法是被实例化了(没有返回体),这是因为没有更多意义来强迫用户去实例化它当用户没有使用插件时(也就是当插件不是可配置的)。

这是个好想法来定义一个插件构造器,不需要争议和设置一个值为这个类的name属性。Plugin一被实例化,iReport就调用plugin的setMainFrame方法来填充mainFrame属性,这个属性涉及到iReport的核心类:通过这个类你可以访问报表,你可以编译,你可以修改iReport的结构等等。

现在我们把焦点放到方法call上。我们已经谈论过这个情况,iReport为每个plugin创建并保存一个实例在内存中:意思就是说call方法不是线程安全的。这就是建议我们继承IReportPlugin的类应该是一种容器为真正的plugin;call方法应该在入口出运行plugin代码。根据这点可以用两种方式来描述plugin:一个是简单的持久实例化,但要避免调用两个连续的plugin,另一个是多重的“不稳定的“实例化,在plugin代码结束时消失:意思就是说当plugin每次被执行时创建一个新的实例,当call方法被实例化时。

以下是一个plugin用持久实例化工作的例子清单。

这个例子中的MyPluginFrame类是plugin的核心类,它展示在任何时间,当用户从菜单上选择这个plugin时。Massive compilerplugin就是以这种方式工作的。 Plugin窗口能被打开关闭很多次,但却从来不会分开,永远保持一个状态。

如果你想创建一个不同与plugin核心类在plugin每次被执行时被实例化,需要对call方法做一些修改:

这个例子中,当用户启动这个plugin时,一个新的MyPluginFrame类型的窗口将被打开。

这里包含了plugins的所有信息,我们使用一部分和iReport有联系的代码:

这种用法返回一个和MainFrame有关的对象;

这个调用返回现行的报表窗口(JReportFrame),从这个窗口可以通过调用getReport()方法找到报表对象。

我们非常支持开发新的插件。如果你有任何关于这个话题的建议,或者可以澄清如何实现一个新的插件,不要害怕和我们联系。:)

Massive compiler是一个编译大型jrxml文件的工具。它是有用的当你想迁徙到一个新的JasperReports版本:在这个例子中,为避免版本冲突,你还得重编译老的源文件。

当plugin被启动时,将显示一个窗口用来选择编译的文件。你可以输入或者用“browse“按钮选择存储在编译目录中的文件(你可以强制plugin在子目录中查找,通过选择可选框” Search Sub Directories “)。按”find“按钮,将列出所有一.jrcml或.xml结尾的文件。我们仅仅选择这些文件来编译,通过按“Compile

如果你想你可能替代这个老的.xml文件用新的.jrxml文件。如果.jasper文件已经存在详细的文件,它可能会创建一个备份,创建新报表之前拷贝老文件。

如果有错误放生当编译文件时,一个警告图标显示在左边的文件名上。双击连接到这个叫人厌恶的文件,你就能看到错误细节(图15.5)。

plugin Text Wizard被创建是用来简单化文本报表的生成(基于字符的报表)。目的是用标签和字段建一个列表格式的报表。

当你启动这个插件,他确定打开的报表的宽度和改变宽度。通过按“Check forfields widths”按钮,包含变量的报表字段被刷新。字段名字的右边,有其他两列;第一个包含了最小值,就是需要显示的全部内容的字段的数目(这个信息可以通过用JDBC驱动的ResultSetMetaData返回来得到);第二列可以手动的改变字段的最小长度:这个值被切断后的所有字符。

按“Add elements”按钮添加标签和字段安置到报表中。每一个Textfield都将设置一个表达式来截短包含的值,就像这样:

这个例子上的字段,XYZ可能有一个最小长度值是50个字符。

如果字段的值的长度超过50,它将被截短。

}

MD5 加密后的位数一般为两种,16 位与 32 位。16 位实际上是从 32 位字符串中,取中间的第 9 位到第 24 位的部分,用 Java 语言来说,即:

MD5 加密后的字符串又分为大写与小写两种。

所以一个 “123456” 字符串,MD5 加密后的结果类型有这些:

}

我要回帖

更多关于 jaspersoft 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信