`
uule
  • 浏览: 6359415 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

iReport默认参数和变量的含义解析【转】

阅读更多

1.

变量:
$V{PAGE_NUMBER} 代表当前页数(可以是页码也可以是页数,通过TextField的计算时间的不同值来设置)

$V{PAGE_COUNT} 当前页面中记录的数目

$V{groupname_COUNT} 代表当前组的记录数   eg:如果组是根据$F{the_city}分组,组名是CityGroup的话,那么此变量为$V{CityGroup_COUNT}

$V{COLUMN_NUMBER} 列号码

$V{COLUMN_COUNT} 当前列中记录的数目(是当前页里行的序号,在新页上会重置为1)

$V{REPORT_COUNT} 当前文档中数据源记录数目

 

对于$V{PAGE_NUMBER}:
当evaluationTime="Now"时,即是计算当页所在哪一页. (now:即时执行此表达式.)
当evaluationTime="Report"时,即是计算当页所在哪一页.(Report:整个报表执行完后才执行此表达式)
 


 2. 参数:
Parameter name                                 Class type
          
$P{REPORT_PARAMETERS_MAP}           java.util.Map
这是一个内置的参数,这个参数总是指向一个 java.util.Map 对象,该对象保存了用户调用报表装填过程时传递给报表引擎的用户定的参数。

$P{REPORT_CONNECTION}                   java.sql.Connection
这 个报表参数指向一个 java.sql.Connection 对象,这个对象被提供给报表引擎用来通过 JDBC 来执行 SQL 报表查询。将 master 报表使用的 JDBC Connection 对象传递给 subreport 是非常有用的,有关这方面信息请查看 subreport 例子

$P{REPORT_DATA_SOURCE}                 net.sf.jasperreports.engine.JRDataSource   
在 报表装填的时候,我们可以或者直接由应用程序中提供,或由报表引擎从所提供的 JDBC   Connection 在后台 create 而获得一个数据源。这个内置的参数允许我们在报表表达式中或 scriptlet 中访问报表数据源,而不论我们为什么要这么做。

$P{REPORT_SCRIPTLET}                       net.sf.jasperreports.engine.JRAbstractScriptlet
即 使报表不使用 scriptlet ,这个内置的参数仍将指向一个 net.sf.jasper.engine.JRAbstracStriptlet 实例,该实例实际是一个 net.sf.jasper.engine.JRDefaultScriptlet 对象。
但是当使用 scriptlet 时,报表装填过程所生成的这个指向 scriptlet 类实例的引用允许我们调用其中的某些特殊函数,使用或控制 scriptlet 对象在装填过程中已经准备好的数据。在 scriptlet 例子中你可以看到更详细的使用过程。


Built-in variables内置变量

PAGE_NUMBER    包含了当前页码,在整个报表中包含总的页数。

COLUMN_NUMBER     包含当前是第几列

REPORT_COUNT 指示当前正在处理的是第几条记录

PAGE_COUNT      当前页中包含了几条记录

COLUMN_COUNT       当前列中包含了几条记录

<group name>_COUNT 以变量前缀来表示这个组记录数


Evaluation Time赋值时间

Now 立即求表达式的值

Report 报表产生之后求表达式的值

Page 页未求表达式的值

Colum n列末求表达式的值

Group求每组的值

例如:

第几页:$V{PAGE_NUMBER} Evaluation Time :Now

总页数:$V{PAGE_NUMBER} Evaluation Time :Report



Calculation types计算类型

Nothing   不是计算类型,它被使用当用户指定内在的表达式时,每条记录将被赋值。

Count      计算所有非null的表达式的次数,不要把它和sum搞混了,sum是计算的是数字的结果

Sum 反复的迭加表达式当前的值

Average   计算所有标准输入的表达式的平均值。

Lowest    返回标准输入中最低的表达式的值

Highest    返回标准输入中最高的表达式的值

StandardDeviation 返回标准输入中规格不同的表达式值standard deviation

Variance 返回标准输入中不一致的表达式值

System    不是一种计算方式,也不求表达式的值;使用这个后,报表引擎仅将最后一个变量值放入内存中;它可以用脚本来存储计算结果。.


Reset types重置类型

None       这个Initial Value Expression总是被忽视

Report     这个变量被初始化一次仅仅在报表创建的开始,用Initial Value Expression。

Page       这个变量被初始化在每个新页

Column   The这个变量被初始化在每个新列(或者在每页,如果这个报表页仅仅只有一列的话)

Group     The 这个变量被初始化在每一个新的组(我们定义这个组用Reset Group)

 

3. 网上资料:

写道
(1)
JasperReports是一个开源的java报表制作引擎
iReport是JasperReports的一个GUI工具,用来生成JasperReports的jrxml文件。
JasperReports的报表是用XML文件来定义的,约定用jrxml作后缀名。一个典型的jrxml文件包含以下元素:
* <jasperReport> - 根元素
* <title> - 报表的标题,一篇报表里只在开头打印一次
* <pageHeader> - 页眉,报表每页开头打印一次
* <detail> - 报表正文
* <pageFooter> - 页脚,报表每页末尾打印一次
* <band> - 定义报表部件,以上所有元素都包含一个band元素作为他们唯一的子元素
·Summary:可能需要对几页(你的报表可能有几个页组成)的统计值。比如50个销售记录共占用了3页,那么放置这些统计记录的统计值最好的地方就是summary。
·groupHeader:每个表的内容可能需要根据某个属性进行划分显示内容和计算内容,比如希望以月份为单位每组分开显示销售记录,那么就可以定义一个组(组的定义参考后文),groupHeader就是放置组说明或是组标志最好的地方。
·Groupfooter:放置组的统计或是说明

(2)
各元素分析:
static text:静态文本,只是用来在报表中显示;
$P--->表示是参数;
如:"20"+$P{statement_current_date}

$F--->表示是textfield变量.
如:$F{account_code}
此变量是在<field name>中定义的.其值是在<queryString>中,通过select数据库后,得到的.
select的列名 = field name

$V--->表示一个变量
如:$V{balance}
变量的默认值是在报表中设置的.一般设置为0.其真正的值是通过 $P或$F来获得的.

(3)
A,报表中的QueryString语句,可以通过界面上的DataBase中的Report SQL Query来进行添加-->会自动生成相应的TextField.若不行,则可自动手动添加.
B,如果要直接修改代码,可以选择界面上的'编辑'-->'直接编辑XML Source'-->先进行保存-->就会出现代码界面.
C,如果要修改JASPER REPORT的属性,可以选择界面上的'预览'-->'报表属性'
E,添加group,可以通过点击界面上的相应'group'按钮来添加.
F,隐藏不要的区域,要设bank=0,而不能删除为空.删除为空,则为默认值
G,IReport中的左栏中的各元素的后面的[X,Y]内的数据,是指此元素偏离'左上角'的X,Y距离.
H,设置子报表时,要将子报表的属性中的"上边界,下边界,左边界,右边界"全部设置为0,否则会出现子报表传回来的数据,在主报表中没法对齐的现象.

(4)
当没有数据(是指QueryString语句SELECT出来的数据为NULL)时,设置怎样显示:
相关代码:
whenNoDataType="NoPages / BlankPage / AllSectionsNoDetail"
NoPages:当没数据时,会弹出一个对话框提示你没数据,然后显示一个没激活的框.
BlankPage :不会提示,只是显示一个白纸.
AllSectionsNoDetail:不会提示,但那些静态的文本,以及从上一层或JAVA文件中传来显示的参数,都可以显示.

(5)
内置的报表变量:
$V{PAGE_NUMBER}:(常用)
这个变量保存当前的页号,在报表装填结束的时候,这个变量就保存着最终文档的总页数。所以要在JasperReport的文本字段中显示页号和总页数你都可以用它。
A,
只需要添加一个系统的变量:$V{PAGE_NUMBER};
对于$V{PAGE_NUMBER}:当evaluationTime="Now"时,即是计算当页所在哪一页. (now:即时执行此表达式.)
当evaluationTime="Report"时,即是计算当页所在哪一页.(Report:整个报表执行完后才执行此表达式)
B,
并将其转换为String的类型.
C,总体代码:
<textField evaluationTime="Now">
<textFieldExpression class="java.lang.String">
"Page " + String.valueOf($V{PAGE_NUMBER}) + " Of"
</textFieldExpression>
</textField>
<textField evaluationTime="Report">
<textFieldExpression class="java.lang.String">
String.valueOf($V{PAGE_NUMBER})
</textFieldExpression>
</textField>
$V{REPORT_COUNT}:
当evaluationTime=Report时,将记录报表的总记录数.
当evaluationTime=Column时,将记录报表从开始到当前页的总记录数.
Variable COLUMN_NUMBER
这个变量将记录当前的列号。
Variable PAGE_COUNT
这个变量纪录当前页中处理的record的数目。
Variable COLUMN_COUNT
这个变量纪录生成当前列时所处理的record的数目。

(6)
field的动态显示+动态显示不同的格式:
有些报表可能需要对同种类型的数据根据重要性不同而显示不同的风格。例如,要在订单列表中加亮显示金额超过100$的订单.
而文本域的现实格式不能动态改变,我们如何实现这种功能呢?
解决办法是:
在同样的位置放两个文本域来显示相同的内容,但是设置不同的显示格式,一个正常显示,一个加粗并加亮显示红色,同时还要为他们设定<printWhenExpression>元素,让他们可以根据条件表达式来切换。这里的表达式就是$F{value} < 100(正常显示的文本域)和$F{value} >= 100(加亮显示的文本域)。

(7)
创建子报表
1)
在代码中,将子报表以参数形式加载:
JasperReport sixUnitPrice = (JasperReport)JRLoader.loadObject("jasper/TrendAve_ItemIntel_6MonthUnitPrice.jasper");
parameters.put("sixUnitPrice", sixUnitPrice);
2)
在主报表中,创建上面的相应参数sixUnitPrice. 其类型为:net.sf.jasperreports.engine.JasperReport
3)
在iReprot中添加,划拉出一块子报表.
在subReport项中,选中:' use connection expression '
在subReport other项中:
设置image expression class=net.sf.jasperreports.engine.JasperReport
设置subreport expression中填写代码中的相应参数:$P{sixUnitPrice}
4)
设置要传到子报表的参数,并在主报表中创建相应的参数.
5)
新建子报表,创建一参数(与主报表传递的参数一样),来接收从主报表传来的参数.-->即可应用了.
说明:
位于多层之下的子报表,也需要从主报表开始时,就可以加载,传递下去,否则加载不了.因为一开始,都是从JAVA文件中从传过来,然后一层层传下去的.

(8)
hashmap参数在报表间传递值的用法
1)
如何带参数:
在某层子报表中创建一个新的子报表,此新子报表,必须从:报表java类中定义-->主报表-->各上级父报表中对此新子报表进行定义(定义此参数+各父报表添加此新报表参数,以便其子报表可以获得)-->目的子报表
2)hashmap参数在报表间传递值的用法
如上的专题记录,$P{group_total_hash}此参数是一个hashmap,从其定义是在子报表中的,最终用:是在主报表中,作为统计数据.
怎样用:
1.
先在主报表,以及子报表中都要定义hashmap,并在子报表的各上层报表进行赋值,使参数可以主报表与子报表中间进行传递:
<parameter name="group_total_hash" isForPrompting="false" class="java.util.HashMap">
<defaultValueExpression ><![CDATA[new java.util.HashMap()]></defaultValueExpression>
</parameter>
2.
在子报表中,在区间的显示属性中添加:
$P{group_total_hash}.put();如下:
$P{trayout_hash}.put("trayout",$F{totalqty}) == null?
Boolean.TRUE:Boolean.TRUE
3.
/*
在主报表中:
子报表的返回值有一个问题:它们是在当前区域的所有元素都被处理之后才返回的。
所以,为了能在主报表中的子报表所在的同一区域显示返回值,我们必须延迟文本域表达式的处理时机。这是通过加入一个无效的分组让表达式在分组结束时处理来实现的,而这个无效分组的效果就是数据源中的每条记录就是一组,而且它自己没有组头和组尾区域。
*/
在主报表中:
添加一Field,设置数据类型为Double,且Evaluation time=Column(否则数据出不来)
$P{group_total_hash}.get();如下:
new Double
(
((Double)$P{trayout_hash}.get("trayout")).doubleValue()
-
((Double)$P{trayin_hash}.get("trayin")).doubleValue()
)
4.
具体可以参考ACCOUNT中的PL报表,或SCM中的item intelligence报表中的设置及用法:
主报表:
ProfitLoss_basic.jrxml
用于计算各部分total的子报表:
ProfitLoss_basic_subReport_profit_loss_total_year_list.jrxml

TrendAve_ItemIntelReport.jrxml
TrendAve_ItemIntel_trayout.jrxml.

(9)
Group的用法:
用法一:(分类显示及计算)
假设有两表:
mysql> select * from A;
+------+------+
| id | name |
+------+------+
| 1 | hk |
| 2 | hk |
+------+------+
mysql> select * from B;
+------+------+------+-------+
| id | Aid | name | value |
+------+------+------+-------+
| 1 | 1 | sz | 1 |
| 1 | 1 | cz | 1 |
| 2 | 2 | zh | 1 |
| 2 | 2 | gz | 1 |
+------+------+------+-------+
报表要分两层,第一层循环查询A表,第二层(即子报表)循环查询B表在属于A表的记录.
若不用group,则会出现(-->后面是各组件中iReport中的位置):
ID Name value -->放于报表中的pageHeader
1 hk 1 -->放于第一层报表中的detail -->循环每一条记录且显示
1 sz 1 -->放于第二层报表中的detail
2 cz 1
2 hk 1 //name与上相同
1 zh 1
2 gz 1

若采用group按照name进行分组,则jasper会把name相同的放入一组,只显示一次.

采用name分组后的效果:
ID Name value -->放于报表中的pageHeader
1 hk 1 -->放于第一层报表中groupHeader,将所有相同的name集合在一起,只显示一次
1 sz 1 -->放于第二层报表中的detail
2 cz 1
1 zh 1
2 gz 1
sum value: 5 -->放于第一层报表中groupFooter
补充说明:
对于上面的group,须先点击"group"按钮进行定义(如:nameGroup).

同时,可以以group的基准进行计算(结合变量variable),放于groupFooter.
(1)
在iRport中,新建变量sumValue,定义如下:
variable type: Double
caculation type: sum
Reset type: Group
Reset Group: 上面自定义的group名(如:nameGroup)
variable expression:(即进行计算的表达式) $F{value}
(2)
在groupFooter添加一field:
须定义:
Evaluation time : group,而不是now
Evaluation Group: 上面自定义的group名(如:nameGroup)

jasper报表,子报表内容显示重叠
在jasper中,若在detail区域中,把两个一模一样的子报表上下放置.则在循环输出时,会出现上下子报表
输出内容相遮掩的结果.
解决方案:用group分离显示.
把两个子报表,分别放于两个不同的group中,分组条件为主报表的每一个ID,这样,主报表循环显示时,就
会将各分组一一显示出来,不会影响其显示.

用法二:
利用group来进行分组和实现子报表返回值:
第(8)点的返回值,只适合于非循环性的.
若在主报表的detail区域,需要让每条record都将子报表返回值到对应的record中,则要采用这种方法.上面的方法实现不了.
因为子报表的返回值有一个问题:它们是在当前区域的所有元素都被处理之后才返回的。如果你想在子报表所在的主报表区域显示它的返回值,你最终将看到它们返回的太晚了。
具体实现方法:
1)
先在主报表,子报表建立一个同名的hashmap容器,且将主报表的这个参数作为子报表的传递参数,传到
子报表中.
2)
在报表中,对窗口进行加值:
方式一:
在子报表中,在summary区域的属性中添加:
$P{trayout_hash}.put("trayout",$F{totalqty}) == null?Boolean.TRUE:Boolean.TRUE
方式二:
在子报表中,在summary区域中添加一个不可见的直线元素,且在其中设置:
<line>
<reportElement x="0" y="0" width="0" height="0">
<printWhenExpression>
$P{trayout_hash}.put("trayout",$F{totalqty}) == null?Boolean.FALSE:Boolean.FALSE
</printWhenExpression>
</reportElement>
</line>
3)
在主报表中,添加一个分组,以每条记录作为一个分组.操作如下:
A,点击GROUP按钮.
B,填写组名;
C,分组表达式: $F{item_code}.(也可以id作为分组) -->分组的关键所在
D,选择:是否start on a new page -->让最后所得的分组,是否以分页的形式显示.
4)
对于detail区域中,要返回值的field,这样设置:
<textField evaluationTime="Group" evaluationGroup="itemcodeGroup">
<reportElement x="335" y="50" width="175" height="15"/>
<textFieldExpression >
$P{trayout_hash}.get("trayout")
</textFieldExpression>
</textField>
采用Group实现返回值的说明:
子报表的返回值有一个问题:它们是在当前区域的所有元素都被处理之后才返回的。如果你想在子报
表所在的主报表区域显示它的返回值,你最终将看到它们返回的太晚了。
所以,为了能在主报表中的子报表所在的同一区域显示返回值,我们必须延迟文本域表达式的处理时
机。这是通过加入一个无效的分组让表达式在分组结束时处理来实现的,而这个无效分组的效果就是
数据源中的每条记录就是一组,而且它自己没有组头和组尾区域。
<group >
<groupExpression>$F{item_code}</groupExpression>
</group>


(10)
若数据类型设置为Double,则须:
$P{trayout_hash}.get("trayout")-->Object类型;
((Double)$P{trayout_hash}.get("trayout"))-->转换成Double类型;
((Double)$P{trayout_hash}.get("trayout")).doubleValue()-->转换成double类型,进行计算;
new Doubel(A-B)--->将最终结果转换成Double,因为上面设置类型类型时,用了Double.
如下:
new Double
(
((Double)$P{trayout_hash}.get("trayout")).doubleValue()
-
((Double)$P{trayin_hash}.get("trayin")).doubleValue()
)

(11)
变量还可以声明来完成引擎内建计算的求值,如:count、sum、average、lowest、highest、 variance等等。一个完成Quantity字段sum计算的变量定义如下:
<variable name="QuantitySum"
class="java.lang.Double" calculation="Sum">
<variableExpression>$F{Quantity}</variableExpression>
</variable>
我们还可以通过制定初始化级别来改变计算过程,默认的级别是Report就是变量仅在报表开始处初 始化一次,一直到报表结束完成计算。
我们可以选择更低的级别让变量在每个Page、Column或者Group级别重新初始化。假如我们想计算 计算每页的总数,变量声明如下:
<variable name="QuantitySum" class="java.lang.Double"
resetType="Page" calculation="Sum">
<variableExpression>$F{Quantity}</variableExpression>
<initialValueExpression>new Double(0) </initialValueExpression>
</variable>
变量将在每一页的开始处被初始化为0。

(12)
变量的resetType解释:
报表变量的值可以在每一次迭代(iteration)中被改变,但也可以在装填过程中的某一特定的时间(specified moments)通过它的初始的value表达式恢复其初始值。这一行为是由resetType属性控制的,这一属性规定了报表装填过程中当报表变量在何时需要重新进行初始化(或恢复到初始值)。该元素有五种选项值:
4.1
No Reset:变量将不会使用其initial value expression对自身进行初始化,而将仅报表从变量表达式中所求得的值(resetType=”None”)。
4.2
Report Level Reset:变量将在报表填充过程的起始阶段使用其初始化表达式初始化一次(resetType=”Report”)。
缺省的属性为resetType=”Report”
4.3
Page Level Reset:变量将在每一页的起始时被重新初始化(resetType=”Page”)。
4.4
Colunm Level Reset:变量将在每个新列的开始被初始化(resetType=”Column”)
4.5
Group Level Reset:变量将在每次resetGroup属性提供的break的地方被重新初始化(resetType=”Group”)。
Reset Group
如果存在的话,resetGroup属性包含了报表的组的名字并且仅与resetType=”Gropu”的resetType属性相关联。

(13)
报表的分层显示方法:
外层,在主报表中查询循环显示;
下层,在子报表中查询循环显示.
分享到:
评论

相关推荐

    ireport使用 参数Parameter的用法和dataset的用法 table的用法

    在报表设计领域,iReport作为一款强大的JasperReports设计工具,提供了丰富的功能,包括参数(Parameter)、数据集(Dataset)和表格(Table)的灵活运用,使得复杂的报表设计变得简单易行。下面我们将详细探讨这三个关键...

    ireport报表参数传到子表步骤

    在iReport设计报表时,有时候我们需要将主报表的数据传递给子报表,以便子报表能够根据这些参数进行定制化的数据查询和展示。这个过程涉及到的主要知识点是报表参数的传递,也就是所谓的"传参"。以下是对这个过程的...

    ireport 中的有关计算公式

    1. **创建变量**:在Ireport的设计界面中,首先添加一个新的变量,确保其类型被设置为`java.lang.Object`,这是由于在计算表达式中可能涉及到不同类型数据的转换。 2. **编写条件表达式**:利用Java的三元运算符来...

    iReport中文详细教程

    ### iReport中文详细教程 #### 一、介绍 iReport是一款功能强大的开源报表设计工具,完全采用...接下来的章节将进一步探讨报表元素、字体和样式、字段、参数、变量等更多高级功能,以便深入理解iReport的强大之处。

    IReport文档合集

    "IReport默认参数和变量及一些内建设置的意义.doc"可能探讨了IReport的配置选项和内置变量。这可能包括理解并设置报表属性,如页面大小、边距、打印方向,以及使用预定义的变量和常量,例如系统日期、页码等。这部分...

    iReport-5.1.0和iReport-5.6.0

    iReport-5.1.0和iReport-5.6.0

    ireport使用subdataset主表和子数据集进行参数传递

    总结来说,通过在 iReport 中巧妙地使用 `subdataset` 和参数传递,我们可以创建动态、交互式的报表,使得用户可以根据需要筛选和查看数据。这在处理复杂报表结构和多层级数据时特别有用。记住,正确配置数据集、...

    ireport导出pdf和word文档实例

    - 在`iReport`中,设计完成后,选择“文件”-&gt;“导出”,然后选择"JasperPrint to PDF"选项,设置好导出参数,即可生成PDF文件。 4. **导出为Word(DOC)格式**: - Word文档更适合需要编辑和修改的内容,但`...

    iReport java 报表

    7 精华教程_6_字段,参数和变量精解 iReport 字段,参数和变量精解 37K 8 精华教程_7_Bands and groups iReport Bands and groups 15K 9 精华教程_8_多个子报表的示例 iReport 多个子报表的示例 24K 10 精华教程_...

    ireport最全打印归纳

    1. 报表设计区域:画报表的样式,报表用到的字段、参数、变量、ScriptLet 都在这里。 2. 组件面板:报表中用到的各种组件。 3. 属性设置区域:设置报表的属性,包括变量、参数、字段等。 4. 报表结构:报表被垂直...

    Ireport实现金额大写.doc

    iReport 实现金额大写 iReport 是一款功能强大且灵活的报表设计工具,它提供了许多有用的功能...使用 iReport 实现金额大写可以满足报表设计中的需求,并且可以提供一个灵活和强大的解决方案来满足各种报表设计需求。

    iReport 报表、子报表、主从报表、合计、实例解析

    iReport 报表、子报表、主从报表、合计、实例解析1. 开发使用步骤(iReport4.1)... 2 4.1. JasperReport 和iReport的介绍... 2 4.1.1. JasperReport 简介... 3 4.1.2. iReport 简介... 3 4.1.2.1. iReport几个重要...

    IReport中文文档说明

    **iReport字段、参数和变量** 字段是从数据源中获取的数据单元,如数据库的列。参数允许用户在运行时输入值,影响报表的生成。变量是动态计算的结果,可以用来执行累计、计数等操作。它们三者共同构成了报表的数据...

    (四)ireport制作报表,添加查询条件参数

    除了基本的查询参数,还可以使用表达式、变量和计算字段来实现更复杂的逻辑。同时,IReport支持多种数据源,包括数据库、CSV文件、XML数据等,满足不同场景的需求。 在开发过程中,了解如何有效地利用IReport的参数...

    Ireport3.7详解教程

    4. **表达式和变量**:iReport中的表达式和变量是构建动态报表的关键。我们将学习如何编写和使用表达式,以及如何定义和管理变量,以实现复杂的计算和逻辑控制。 5. **数据源和查询**:了解如何设置和管理数据源,...

    ireport中文版

    同时,ireport支持表达式和变量,使得报表的计算和动态内容展示变得简单。 5. **导出多种格式**:ireport设计的报表可以导出为PDF、HTML、Excel、CSV等多种格式,方便用户在不同场景下使用和分享。 6. **丰富的...

    ireport模板和自定义字体jar

    在IT行业中,报表生成是数据分析和业务展示的重要环节,而`iReport`作为一个开源的Java报表工具,为开发者提供了设计和生成复杂报表的功能。本文将深入探讨`iReport`模板和自定义字体的使用,以及如何结合`...

    iReport1.2.1 用户手册

    2. **安装与配置**:手册会指导用户如何下载、安装和配置iReport,包括系统需求、安装步骤以及环境变量的设置。 3. **工作区和界面**:手册会详细介绍iReport的工作区布局,包括菜单栏、工具栏、报告设计区域等,...

    Ireport

    通过阅读和理解这个"ReportProcess_share.java"文件,开发者可以学习到如何在实际项目中有效利用iReport生成报表,从而提升开发效率和报表质量。同时,源码分析也有助于深入理解iReport的工作机制,为未来的二次开发...

Global site tag (gtag.js) - Google Analytics