本章对菜单栏中的报表功能的操作以及应用进行了详细的解说。
本菜单项的功能是用于定义在报表中用到的参数。
参数的概述:
在我们设计一张报表的时候,很少有里面的数据是固定不变的,常常需要根据一些条件来过滤出我们想要的数据。这就需要通过参数的形式控制报表中的数据。例如日报表,当我们希望生成一张日报表时,首先需要向报表传递日期参数,然后报表才会根据我们传递进去的日期参数,生成该日的日报表。
参数可以在数据集和表达式中被引用。
SQL语句中使用参数
?用法1:
如上图所示,在SQL语法里,需要用到参数的地方写上问号,不用考虑参数的数据类型,程序中会自动转换。然后在参数tab页中按照问号顺序,写入参数名或含参数的表达式,如下图所示:
?用法2:
如上图所示,在报表中定义参数,然后可以在SQL语句的任意一个位置中使用,格式为${参数名},并且不需要在后面的“参数”Tab页中再进行定义。
query/call函数中使用参数
SQL语句中使用问号,然后在SQL语句后面用逗号分隔,跟上参数或含参数的表达式,有几个问号就跟几个。
●举例:
query("SELECTmax(amount)FROMcontractWHEREcontract.signdate>andcontract.signdate<",starttime,endtime)
call("{callResultSet(,,)}","@@result","000001",a2)
表达式中使用参数
(1)直接在表达式中引用参数名,把参数作为变量来使用,如果参数名和字段名或其他名称相重复,那么在参数名前加@符号,如@参数名
举例:="从"+string(@starttime)+"到"+string(@endtime)
(2)表达式中使用${arg1}引用参数
举例:=ds1.${arg1}
参数的定义:
点击报表-参数,可打开参数编辑界面,如下图所示:
点击【增加】按钮,可添加一个参数定义,你可以编辑参数的名称、描述、数据类型、值表达式、参数类型等属性;在参数列表中选择一个参数,点击【删除】按钮,可删除该参数;通过点击【上移】/【下移】按钮,可调整参数列表中参数的位置。编辑完点击【确定】按钮即可。通过点击【复制】按钮,可复制选中的参数,按住ctrl键,可复制多个参数;打开其他报表,通过点击【粘贴】按钮,可将复制的参数添加到其他报表的参数配置界面。
名称
名称可以使用默认的,也可以根据需要自己编辑,数据集和表达式中引用参数时,用的就是它的名称。比如:starttime。
报表参数名称禁用关键字:__arg,__splHome,__rpx,__rpxHome,__rpg,name,id。
填报表参数名称禁用关键字:_autoData,__arg,adp,autoFillDimExp,checkType,d,dataFile,dataFiles,__splHome,fileType,id,name,__rpxHome,sgid,__sht。
描述
数据类型
获得数组型参数的元素个数:count(argName),其中argName是个数组参数。
获得数组型参数中第二个元素:argName(2)。
数组型参数由于是个数组集合,因此可以像集合表达式一样直接写入单元格进行扩展。
有的报表分组时,对于分为几组,分为哪几组是不确定的,这个时候将参数类型设置为相应的数组类型,就可以通过每次输入的参数值来动态控制分组。
定义参数arg_1,参数类型为字符串组,在某一单元格中编辑=arg_1,并将该单元格设置为横向扩展。
如果参数赋值为高中、专科、本科、硕士,
则该单元格横向扩展为;
如果参数赋值为小学、初中、高中,则该单元格横向扩展为。
值表达式
在这可以设置该参数的缺省值,也可以不设置。不设置时当null处理。
参数类型
定义参数的参数类型为普通参数还是动态参数,详细介绍参看下一章节。
参数的类型:
参数的类型有普通参数和动态参数。
普通参数
普通参数直接将输入的参数值传给报表进行运算。如果输入的参数值不做任何变化直接传给报表进行计算,我们就可以定义参数类型为普通参数。
动态参数
动态参数是一个表达式(不用等号开头),报表运算时先解析该表达式,然后将表达式计算出的结果作为参数值传给报表进行运算,用动态参数的时候要注意参数的数据类型。动态参数适用于需要动态解析表达式的场合。
●举例:体会普通参数和动态参数的区别
通过下面的例子看两者的区别,首先定义参数,如下图所示:
三个参数的参数类型和数据类型不同,请注意看一下,设计的报表如下图所示:
为便于查看其中的区别,三个单元格的背景色做了不同的设置,预览效果如下图:
通过这张表可以看出普通参数与动态参数、动态参数之间数据类型不同时的区别。
参数的引用:
在报表中对参数的引用除直接在表达式中写参数名外,还有如下两种引用方式:
?@参数名在表达式中被当成变量来使用,在表达式进行计算的过程中,才引用参数的变量值。
?${参数名}${参数名}的引用方式是代表一个没有数据类型的字符串标识,在报表运算之前,系统会全面搜索整张报表定义,将所有${}中的参数名替换成参数值,${参数名}中的参数名不能写在引号里。
利用${参数名}引用可以在报表中动态的进行表达式的替换,根据用户传入的不同参数值,在报表中可以计算出不同的表达式结果,从而得到不同的报表信息,这样用户就不用根据不同的情况编制许多不同的报表了,大大减轻了用户的工作量。
属性值不能用${参数名}格式引用,${参数名}引用只能用在表达式中。填报属性、数据集属性中的参数值,这两个地方目前不能用这种引用方式,其它地方的表达式都可以使用。
例如:
单元格表达式为=ds1.select(${arg1}),而arg1的值为name,那么该表达式会被替换成=ds1.select(name),替换后才进行表达式的运算。
本菜单项的功能是用于定义报表中用到的数据集。
数据集的概念:
数据集的定义:
点击报表-数据集,或者使用快捷键F11,可打开数据集设置界面,如下图所示:
图1.4.2.2-1
在上面的界面中,【增加】按钮用于添加一个数据集;【删除】按钮用于删除数据集列表中选中的数据集;【上移】、【下移】可以改变数据集在数据集列表中的位置;【编辑】按钮可以修改数据集列表中选中的数据集定义;【浏览数据】按钮可以查看数据集包含的数据信息;【别名】按钮可以为记录集中的字段起别名,当从数据源取字段时,很多情况都是英文字段,这时可以通过数据集字段中文标题设置界面,给每个英文字段名附上中文名,我们在制作报表时,从数据集取字段名时可以使用中文名了,这样给不熟悉数据集里英文字段具体含义的用户带来了便利,当数据集类型为内建数据集时,不用设置中文名称,可直接修改字段名为中文即可;【转为内建】按钮可以把外部数据集转为内建数据集,所谓内建数据集是指报表中的数据是存储在报表模板中的。通过点击【复制】按钮,可复制选中的数据集,按住ctrl键,可复制多个数据集;打开其他报表,通过点击【粘贴】按钮,可将复制的数据集添加到其他报表的数据集配置界面。
也可以通过文件-新建报表向导在制作报表的步骤中新建数据集,如下图所示:
在数据集类型列表中可以任意选择一个数据集类型新建报表,也可以直接点击生成空白报表生成一张空白报表。
注意:如果选择的是SQL数据集,并且该数据集有参数,需先点击【添加报表参数】添加参数。
数据集类型:
SQL检索
表示数据集的数据来自数据库,它是通过SQL语句到数据库中检索满足一定条件的数据,从而形成一个数据集。但这种类型的数据集并不要求用户自己写SQL语句,而是通过图形化的向导界面由用户去选择检索条件由系统自动的生成SQL语句,这种类型的数据集适用于那些对SQL语句不太熟悉的用户。
●举例:以订单表和订单明细表为例来建立一个SQL检索数据集。
1、在图1.4.2.2-1所示的数据集设置窗口中点击【增加】按钮,弹出数据集类型对话框,如下图所示:
2、选择“SQL检索”数据集类型,点击【确定】按钮,进入SQL编辑器界面,如下图所示:
3、选择“指定模式”,并通过“可选表名”框和“选中表名”框之间的箭头,在可选表名中选择数据表到选中表名中,也可以通过双击表名选择数据表。
4、切换到“数据字段”标签页,首先通过数据表下拉框选择对应的数据表,下面会列出对应数据表的可选字段,然后通过两个列表框之间的箭头,选择可选字段到选中字段中,也可以通过双击字段名选择字段。
5、切换到“计算列”标签页,通过编辑界面中间的箭头,选择所需要的字段到“计算列”编辑框中,自己编辑表达式。
比如:订单明细表中有单价与数量字段,希望在数据表里直接取出订单的单价与数量的乘积,则可以在计算列中编辑:订单明细.单价*订单明细.数量as总金额,如下图所示:
6、切换到“检索条件”标签页,通过编辑界面中间的箭头,选择所需要的字段到检索条件编辑框中,自己编辑表达式。SQL语句中可以使用参数,在sql语法里,需要用到参数的地方写上问号。
7、切换到“排序”标签页,通过编辑界面中间的箭头,选择需要进行排序的字段到排序字段框中。
8、切换到“语法”标签页可以看到编辑好的SQL语句。在SQL语法里,需要用到参数的地方系统后自动写上了问号,比如我们在前面编辑的检索条件,用到了两个问号。如下图所示:
9、切换到“参数”标签页,按照问号顺序,写入参数名或含参数的表达式(不用等号开头)。在这里不用考虑参数的数据类型,程序中会自动转换。如下图所示:
数据集工厂侦听器类,该类由IDataSetFactoryListener接口来实现,如果数据集创建不需要做特殊处理,就不用设置该属性。如果需要做特殊处理,则需要写一个数据集创建后处理类,用IDataSetFactoryListener接口,实现它的publicvoidbeforeCreated(Contextcontext,DataSetConfigdsc,DataSetarg2)及publicvoidafterCreated(Contextcontext,DataSetConfigdsc,DataSetarg2)方法(详细介绍可参考《程序员参考》数据集工厂侦听小节),并将编译后的类带包路径放在应用的classes下。(注:在设计器端,放到报表安装根目录下的classes文件夹中)
数据集工厂过滤器类,该类由IDataSetFilter接口来实现,如果数据集创建不需要做特殊处理,就不用设置该属性。如果需要做特殊处理,则需要写一个数据集创建后处理类,用IDataSetFilter接口,实现它的publicbooleanfilter(Object[]arg0)、publicvoidsetContext(Contextcontext)、publicvoidsetDataSet(DataSetds)及publicvoidsetDataSetConfig(DataSetConfigdsconfig)方法(详细介绍可参考《程序员参考》数据集工厂过滤小节),并将编译后的类带包路径放在应用的classes下。(注:在设计器端,放到报表安装根目录下的classes文件夹中)
数据集记录行设置:用于控制数据集的按行取数。
起始行和结束行:用于人为控制数据集的行数。如果您的报表数据量比较大时,可以通过参数传递来改变起始行和结束行。一般来说,起始行和结束行都是输入参数,通过参数来控制行号,如果输入常数没什么意义。
预警阈值:勾选后,先获得记录数,判断后未超阈值再生成数据集;不勾选,直接生成数据集,在生成过程中超过阈值,中断,数据集被置空。
根据需要填写数据集工厂侦听器类名,以及起始行和结束行。没有特殊需要,可不填。
10、点击【确定】按钮,回到数据集设置界面。如果字段名为英文时希望给数据字段设置中文标题,可点击【别名】按钮,按照字段顺序为每个字段设置中文标题,然后在制作报表时直接使用中文名即可。
11、如果不想使用缺省数据集名称,可以手动编辑数据集名称,还可以选择不同数据源,最后点击【确定】按钮,完成数据集定义。
存储过程
表示数据集的数据来自存储过程。SQL语句执行的时候要先编译,然后执行。存储过程就是编译好了的一些SQL语句。应用程序需要用的时候直接调用就可以了,所以效率比较高。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和复杂的运算。存储过程可以返回结果集,可以返回参数,也可以同时返回结果集和参数。
存储过程的参数分为输入参数和输出参数两种。输入参数是存储过程执行的条件参数。输出参数类似于返回值,但是输出参数具有两个重要的优势:可以使用输出参数从存储过程传递出VarChar、Int、Money或任何其他数据类型的值,而返回值则只能返回整数。输出参数的另一个优势就是在一个存储过程中可以有多个输出参数,一个存储过程可以包含1024个参数(其中包括输入和输出参数),但是只能包含一个返回值。
●举例一:带有输入参数的存储过程。
1、在图1.4.2.2-1所示的数据集设置窗口中点击【增加】按钮,弹出数据集类型对话框。
2、选择“存储过程”数据集类型,点击【确定】按钮,进入存储过程数据集界面,如下图所示:
3、切换到“参数”标签页,如下图所示:
参数的顺序必须与问号的顺序保持一致,并指定参数模式。这里用到的参数必须在报表-参数中定义,并且在报表-参数中定义参数时需指定对应的数据类型。
从上图可以看到,“参数定义”后有“结果类型”属性,如果“参数模式”为输入参数,选择“默认”就可以了,只要在报表-参数中定义参数时指定对应的数据类型即可。
●举例二:带有输出参数的存储过程。
本例使用的数据库类型为:sqlserver2000sp4
存储过程如下:
createprocProcname
@achar(100)output//默认定义的是输入参数,如果有关键字output说明是输出参数。
as
set@a='aaa'
select*fromjobs
GO
该存储过程返回一个数据集和一个变量a,a的数据类型为char类型,值为’aaa’。
参数对应callProcname()中的,参数表达式为:@arg2,arg2是我们在报表中定义的一个普通参数,它接收Procname存储过程中输出参数a的值。结果类型为字符串,因为我们的输出参数a为char类型,所以结果类型为字符串。参数模式为:输出参数。输出名称为:arg2,我们在报表中就用arg2来引用存储过程中的输出参数a的值。
报表设计中需定义的参数:
报表设计:
预览报表,在参数arg2中输入任何值,报表展示后,E2{}中返回的都是’aaa’,arg2已经被调用的Procname存储过程的输出参数重新赋值了。
●存储过程可以没有输出参数,但是如果你的存储过程是将结果集返回给一个参数,则需要在报表-参数里定义该参数,并指定该参数的“参数模式”为“输出参数”。这个时候,如果你的数据库是oracle,则还需要将这个输出参数的结果类型设置为“游标”。
集算器
集算器类型数据集是指数据集中的数据是从集算器文件中获取到的,集算器文件的运算结果可以通过return语句或者不写(不写时最后一个语句如果是赋值格,则会自动被返回)返回用作润乾报表的数据集。
集算器类型数据集界面如下:
SPL文件:通过SPL文件后面的按钮,选择集算器文件(文件后缀为.splx/.spl/.dfx)。
集算器文件路径既可以是绝对路径也可以是相对路径,在设计器中的相对路径是相对于工具-选项-集算器选项中配置的寻址路径,在web端是相对于raqsoftConfig.xml中的Esproc里的splPath路径。使用相对路径时,路径前不要加斜杠“/”。
缓存文件名对应的变量:缓存文件名对应的变量对应集算器文件中的缓存文件变量
数据管理方式:分为缓存和SPL自管理。
脚本文件优先在WEB应用中查找:使用相对路径时,勾选该选项会优先在WEB应用路径中查找。
参数:如果集算器文件中定义了参数,系统在参数列表中自动加载集算器文件中的参数名。参数列表中参数名对应集算文件里定义的参数名。参数值可以使用值,还可以使用报表参数,使用报表参数时可以对报表的参数通过表达式(这里使用报表的表达式语法)计算出结果传递给集算文件作为参数。
注意:
当数据集用于大报表,并且需在集算器数据集中自定义缓存文件时,需将缓存文件名对应的变量设置为集算器中的缓存文件变量。
集算器文件的内容如下:
1、在数据集设置窗口中点击【增加】按钮,弹出数据集类型对话框。
2、选择“集算器”数据集类型,点击【确定】按钮,进入集算器数据集编辑界面,如下图所示:
3、点击SPL文件后面的按钮,选择集算器文件
系统在参数列表中自动加载集算器文件中的参数
4、点击【确定】按钮,生成数据集
关于集算器数据集的更多用法,可参考《教程》集算器数据集小节。
●注意:能够作为数据集类型被使用的集算器文件,如果用的是报表当前连接的数据源,程序有自动连接数据库机制,集算器文件中可以直接使用db.query()。如果用的不是报表当前连接的数据源,首先集算器文件中必须通过connect(”db”)函数建立数据连接,再进行查询,最后通过close()函数关闭该连接。
例如:下边的SPL使用的数据源与报表使用的数据源相同,则直接使用db.query()来进行查询:
脚本数据集
可直接在脚本编辑区添加计算表达式,通过return语句或者不写(不写时最后一个语句如果是赋值格,则会自动被返回)将结果集返回到润乾报表数据集中,脚本编辑区的表达式语法需遵循集算器语法。
脚本数据集界面如下:
缓存文件名对应的变量:当数据集用于大报表时,为缓存文件设置变量名,方便在脚本中调用缓存文件。
当数据集用于大报表时,脚本必须返回游标。
2、选择“脚本数据集”数据集类型,点击【确定】按钮,进入脚本数据集编辑界面,如下图所示:
在脚本编辑区编写脚本,或粘贴写好的脚本(粘贴时,选中某单元格后点击粘贴按钮),如果脚本中需要传入参数,可在报表文件的参数列表中定义,其中参数名是脚本里定义的参数名。
3、点击【确定】按钮,生成数据集。
●注意:脚本数据集与集算器数据集相同,如果用的是报表当前连接的数据源,程序有自动连接数据库机制,可以直接使用db.query()。如果用的不是报表当前连接的数据源,首先必须通过connect(”db”)函数建立数据连接,再进行查询,最后通过close()函数关闭该连接。
文件数据集
文件数据集是指数据集的数据是从文件中获取到的,支持txt、xls、xlsx、csv、btx(集文件)、ctx(组表文件)六种类型文件。
文件数据集界面如下:
文件:文件名,支持绝对路径或相对路径。使用相对路径时,路径前不需要加斜杠“/”。在设计器中的相对路径是相对于工具-选项中的应用资源路径,在web端是相对于raqsoftConfig.xml中
工作表:当文件类型是Excel文件时,用于选择同一个Excel文件的不同Sheet工作表。
字符集:Text文件、CSV文件的字符集。字符集类型包括:GBK、UTF-8。
第一行是标题:文件中的第一行内容是否作为标题
预览时重新选择文件:数据集在浏览数据或者设计器进行预览时,可以在弹出的重新选择数据集文件对话框中重新选择数据集文件。
如果字符串外有引号则先剥离,包括标题部分:是否删除字符串最外层的引号
分隔符:Text文件字段间的分隔符。分隔符类型包括:制表符(TAB)、逗号(,)、空格、竖线(|)、短横线(-)、下划线(_)。
注意:CSV文件字段间的分隔符仅支持逗号。
起始行/结束行:当文件类型选择Excel文件后,页面中会出现起始行和结束行,用于对Excel文件的行数进行筛选。
使用文件数据集时,有时文件的数据量很大,为了避免将不需要的数据加载到内存,数据量过大造成内存溢出,可采用如下方法,以减小计算得到的数据集。
有用字段:选择文件,选取需要用到的字段。
聚合:对需要做统计的字段进行聚合运算。
过滤:对符合条件的记录进项筛选,过滤条件中不支持使用参数。过滤条件需满足布尔表达式,多个布尔表达式之间可使用逻辑运算符,如:&&,||。
分组:选择需要分组统计的字段。
注:“分组”需要与“聚合”一起使用,单独使用“分组”不起作用,得到的结果会与原始数据一样。
显示:生成的数据集中需要显示的字段。
●举例:用orders.txt建立一个文件数据集。
2、选择“文件数据集”类型,点击【确定】按钮,进入文件数据集编辑界面,如下图所示:
3、点击按钮选择orders.txt;也可以输入orders.txt文件的路径,例如:工具-选项-文件中的应用资源路径设为G:\raqsoft\report\web\webapps\demo\WEB-INF\reportFiles且orders.txt位于reportFiles文件夹时,文件设置为orders.txt即可。
4、选择文件对应的“字符集”类型,默认是GBK。“第一行是标题”默认为勾选。选择字段间的“分隔符”,默认是制表符(TAB)。此时文件数据集编辑界面,如下图所示:
5、选出有用字段,设置聚合运算、过滤条件、分组字段,数据集显示字段。
选出有用字段,订单ID、雇员ID、运货费:
对运货费做求和统计:
设置过滤条件:订单ID<10300
根据雇员ID分组:
选出生成数据集的字段:
点击【确定】按钮,一个文件数据集就创建好了。
内建数据
内建数据集是指数据集的结构和数据都存入报表模板,运算报表的时候不需要从数据源取数了。可以使用户快速的体验建立报表的过程,用户只需在报表设计器中定义一个内建数据集,录入一些数据就可以在报表中使用了,这样给用户的体验过程带来了极大的方便。也可以用于报表的跟踪调试,当报表预览结果和您预想的结果不符合时,可以把数据集转为内建,然后把报表模板发给技术支持人员,方便支持人员跟踪调试。
内建数据类型数据集界面如下:
●举例:创建一个包含姓名和年龄的内建数据集。
2、选择“内建数据集”类型,点击【确定】按钮,弹出“内建数据集”窗口,在此窗口中我们可以定义内建数据集包含的字段和数据值。在“字段”标签页定义内建数据集包含的字段,点击右边的【增加】按钮,在左边的字段列表中就会增加一个字段的定义,可以修改字段名和字段的数据类型。假设我们定义姓名和年龄两个字段,如下图所示:
3、切换到“数据”标签页,点击右边的【增加】按钮,可以添加字段对应的数据值。如下图所示:
我们也可以把Excel文件中已有的数据复制粘贴到内建数据集中。首先复制Excel文件中的数据值,在内建数据集的“数据”标签页点击右边的【粘贴】按钮即可把Excel文件中的数据粘贴到内建数据集中。
4、点击【确定】按钮,一个内建数据集就建好了。
可以把一个外部数据集转为内建数据集也可以把内建数据集还原为外部数据集。
在图1.4.2.2-1所示的数据集设置窗口中选中数据集列表中的一个数据集,点击右边的【转为内建】按钮,即可把外部数据集转为内建数据集。如下图所示:
从上图中我们看到ds1转为内建数据集后,右边的【转为内建】按钮变成了【还原】按钮。选中数据集列表中的ds1,点击【还原】按钮,ds1内建数据集就还原成了它最初的“SQL检索”数据集类型。如下图所示:
●把内建数据集还原为外部数据集,要求内建数据集最初是由外部数据集转化而来的,不能是用户自己建的内建数据集,如果是用户自己建的内建数据集不能还原为外部数据集合。
自定义
自定义类型数据集界面如下:
数据集类名自动加载自定义数据集的类,可以从下拉列表框中选择,输入框可以模糊查询进行过滤。
●举例:创建一个学生成绩的自定义数据集。
2、选择“自定义”数据集类型,点击【确定】按钮,弹出“自定义数据集”窗口,如下图所示:
在数据集类名编辑框中输入数据集类名,该类应该由程序员自己实现,实现润乾报表提供的一个接口IDataSetFactory,IDataSetFactory接口只定义了一个方法:
publicDataSetcreateDataSet(Contextctx,DataSetConfigdsc,booleanretrieve)
自定义类必须实现此方法,并返回一个DataSet对象,以下是对本方法的说明:
功能:生成自定义数据集
语法:publicDataSetcreateDataSet(Contextctx,DataSetConfigdsc,booleanretrieve)
createDataSet()方法由系统调用,我们不用去关心怎么调用它,而关心的是如何利用已有的方法参数,根据需要实现这个方法。createDataSet()方法返回的是一个DataSet对象,可以开始时便新建一个用于返回的DataSet对象:
introws=listsize();//数据初始行数,根据实际求得
intcols=3;//数据列数
DataSetds=newDataSet(rows,cols,"ds1");
DataSet的三个参数分别是数据初始行数、数据字段列和数据集名。新建DataSet对象后往其中设置数据字段名,这个过程一定要在设置数据前。例如,我们要对这个数据集添加三个数据字段:
ds.addCol("name");//列名
ds.addCol("subject");//列名
ds.addCol("grade");//列名
对于有字段的数据集,就可以设置其包含的数据了:
for(inti=0;i Rowrow=ds.addRow(); DataBeandata=(DataBean)list.get(i); row.setData(1,data.getName()); row.setData(2,data.getSubject()); row.setData(3,newInteger(data.getGrade())); } 3、点击【增加】按钮,为自定义数据集添加参数。 4、点击【确定】按钮,一个自定义数据集就建好了。 本菜单项的功能是用于设置报表的全局属性。 常规属性: 在报表属性编辑界面中切换到“常规”标签页,设置报表的基本属性。如下图所示: 报表类型 报表类型有普通报表和参数模板两种。 普通报表:把报表中的单元格作为存储和计算的基本单位,比如有一个3行3列的普通报表,那么在内存里把3*3=9个单元格作为9个对象存储和计算。 参数模板:作为参数模板使用,以接受用户输入参数为目的的报表。 大数据集名称 当需要对大批量数据进行计算时可将数据集设置为大数据集名称,大数据集名称只能是SQL数据集、脚本数据集或者集算器数据集。 注:大报表目前只支持导出到Excel2007。 报表单位 报表单位用于设置报表中数值型属性的单位,包括:毫米、像素、英寸,三种。 使用毫米/英寸时,报表的列宽/行高实际是对应到像素为单位画的,由于毫米/英寸转像素时都会将结果取整,列数多时误差则会比较大,此时建议勾选高精度复选框,使用高精度的计算方式,不再取整,按照实际像素绘制宽度,避免误差。 报表设计器中的数值型属性,我们在设置时只填入了数字没有指定单位,则默认是使用这里设置的报表单位。比如:报表中行/列属性的高度/宽度、统计图中的上/下/左/右边距。 报表属性中与打印纸张大小有关的属性已明确指定了单位mm(毫米),此时则不会使用报表单位里设置的单位了。 图像最大尺寸 图像最大尺寸用于限定报表中所存在的图片文件的大小。当报表中的图片大于所设定的大小时,系统会自动调用安装目录下的\report\logo\outsize.gif或应用下的\raqsoft\images\outsize.gif文件进行显示,替换原有的大图片。用户也可以通过替换outsize.gif来自定义图片大小超出限定时的替换图片。 显示比例 显示比例可调整设计报表和预览报表时的显示比例,但报表本身的大小不变,只是为了方便用户查看。系统提供了200%、133%、100%、75%、50%的显示比例选择项,用户也可以通过自定义选项框,自己设置显示比例。 例如:有一张报表用100%的显示比例需要借助于滚动条才能看到全部的报表内容,但用75%的显示比例不用滚动条就可看到全部的报表内容。如下图所示: 报表格数 报表格数为预算单元格数,用于报表引擎对内存中报表的并发控制。报表中的配置文件可配置在内存中允许使用的最大格子数maxCellNum及预算单元格数defaultCellNum。报表引擎在对报表进行运算前,先读取要计算报表的"报表格数"属性,解析报表格数中的表达式,计算出报表的预算单元格数;如果报表格数未设定,则将defaultCellNum作为预算单元格数。并发计算中报表的总格子数加上当前报表的预算单元格数,如果计算和超过了maxCellNum,那么报表引擎就延迟计算此报表,否则就计算报表。并发计算中,单元格数会随之增加,计算结束后,会随之减少。 例如有一个员工基本信息报表,如下图所示: 它有6列,扩展出来的行数为ds1.count()。我可以在报表属性中设置它的报表格数为:(ds1.count()+1)*6,如下图所示: 员工基本信息报表计算后会占用(ds1.count()+1)*6个单元格。报表引擎对员工基本信息报表计算前,先获取此报表的“报表格数”属性,然后用内存中并发执行的报表总格子数加上员工基本信息报表的“报表格数”,计算结果与配置文件中设置的内存最大格子数比较,如果大于最大格子数则延迟员工基本信息报表的计算,否则就立即计算。 ●“报表格数”可以是整数值也可以是表达式,不需要等号开头。 报表样式 报表属性中设置报表样式后,该样式会自动列入到右侧属性中的单元格样式名列表中。报表样式的配置在[安装根目录]\report\tmp下的reportStyleConfig.xml文件中。 刷新 刷新报表样式的下拉列表。 提示信息 用途待定。 注释 制作报表的人可在此对该报表做些说明和注释,以方便其他人,或日后自己查看。 某张报表是员工信息查询的报表,可以在注释编辑框里输入“预览时在参数值里输入要查询员工的编号,即可查询出该员工的详细信息”,这样初次打开这张报表时,查看注释信息后就明白该报表的意图了。 打印属性: 在报表属性编辑界面中切换到“打印”标签页,设置报表的打印信息。如下图所示: 类型 纸张类型指报表打印或导出时的缺省纸张大小。此属性只在分页方式为“按纸张大小分页”时才起作用。除了标准纸张大小外,还提供了自定义纸张大小的方式,可在自定义纸张高,自定义纸张宽属性里自定义。 尺寸单位: 纸张规格 宽度(毫米) 高度(毫米) A0 841 1189 A1 594 A2 420 A3 297 A4 210 A5 148 B0 1000 1414 B1 707 B2 500 B3 353 B4 250 B5 176 尺寸换算公式:(1毫米×72)/25.4=1像素 72像素=1英寸 方向 报表打印或导出时的缺省纸张方向。分为纵向和横向。默认为纵向,当报表是短宽型的,可以将纸张方向设置为横向。 自定义纸张高 当纸张类型为自定义时,系统读取自定义纸张高属性作为打印时的纸张高度。 宽度 当纸张类型为自定义时,系统读取自定义纸张宽属性作为打印时的纸张宽度。 页边距 上边:报表打印或导出时的缺省上边距。 下边:报表打印或导出时的缺省下边距。 左边:报表打印或导出时的缺省左边距。 右边:报表打印或导出时的缺省右边距。 打印缩放 缩放模式:设置报表打印时的缩放模式,系统提供了与纸张等高/不缩放/与纸张等宽三种缩放模式。 与纸张等高:指将报表按纸张高缩放。 不缩放:指将报表原样展现。 与纸张等宽:指将报表按纸张宽度缩放。 打印缩放适用于导出word。 布局行数/布局列数 布局行数:如果报表是按照行数分页的,那么一张打印纸上可能打印多页报表,该参数设定一张打印纸上纵向可以打印几排报表。 布局列数:如果报表是按照行数分页的,那么一张打印纸上可能打印多页报表,该参数设定一张打印纸上横向可以打印几排报表。 对于卡片式报表,可以在一张打印纸上布局多页报表,这样打印出来的报表不但美观,而且可以任意切割。 把“纸张”组框中的【方向】设为:“横向”,将其他组框中的【布局行数】设为:3,【布局列数】设为:2,如图: 切换到“分页”标签页,在【分页方式】下拉框中选择“按行分页”,将【每页行数】设为:6。其打印预览效果如下图所示: 打印次序 如果报表是按行数分页的,那么一张打印纸上可能打印多页报表,打印次序用于设定多页报表在打印纸上先横向排还是先纵向排。 水平对齐 水平对齐用于设置打印时报表在纸张上的水平对齐方式,有居中、靠左和靠右三种选择。 垂直对齐 垂直对齐用于设置打印时报表在纸张上的垂直对齐方式,有居中、靠上和靠下三种选择。 打印背景图 当报表中插入背景图后,预览时可以看到背景图,但不一定希望打印出来。通过该属性可以设置背景图是否打印。 全屏预览 用于设置打印时,打印窗口是否全屏。 虚拟打印机 虚拟打印机是为报表导出为Text文件后进行打印服务的。当报表导出为Text文件后,如果要打印这个Text文件就涉及到字符终端的打印,这种打印没有图形化的界面让用户来配置打印机,只能用命令来配置。如果每次打印都要求用户用命令来设置打印参数,就会给用户的打印操作带来极大的不方便,为此我们提出了虚拟打印机的概念。用户在报表属性中选择了一个虚拟打印机,那么此虚拟打印机的配置信息就保存到了报表头中,当报表导出为Text文件时,此虚拟打印机的配置也导出到Text文件中,以后打印此Text文件时直接用打印命令打印即可,不用再设置打印机的配置参数了,极大的方便了用户对Text文件的打印。 要使用虚拟打印机,首先需要编辑一个文本文件,文件名为printer.ini。文件内容结构如下图所示: 上图printer.ini文件中[LQ1600]、[LQ1601]、[LQ1602]、[LQ1603]指的是打印机的型号,FF=12和SelectCharSet-2782指的是打印机的配置参数。可以同时编辑多个节点,即编辑多个虚拟打印机的配置。然后把编辑好的printer.ini文件放在报表设计器的安装目录àclasses文件夹下。如下图所示: 重新启动报表设计器,让printer.ini文件生效。点击报表-报表属性,切换到打印标签页,这时虚拟打印机下拉框中就列出了你在printer.ini文件中配置的打印机型号,如下图所示: 刷新虚拟打印机下拉列表。 分页属性: 在报表属性编辑界面中切换到“分页”标签页,设置报表的分页打印信息。如下图所示: 纵向分页时打印方式 纵向分页时打印方式用于设置报表纵向分页时页眉页脚和标题的打印情况。 页眉页脚和标题都可以选择“每页都打印”和“仅首页打印”两种情况。 1、每页都打印 有时不同的人可能查看同一个报表的不同页,同一个报表的不同页不一起存放,为了使每一个用户查看报表时都能了解报表的页眉页脚和标题信息,我们就需要在每页上都打印页眉页脚和标题,这时只需在“纵向分页时打印方式”组框中的【页眉页脚】下拉框中选择“每页都打印”,在【标题】下拉框中选择“每页都打印”就可实现。 预览后打印我们发现,第一页显示了页眉页脚和标题,第二页也显示了页眉页脚和标题,其打印预览效果如下图所示: 2、仅首页打印 有时我们把打印出来的报表页装订在一起存放,所以只想在第一页打印页眉页脚和标题,其他页就不打印了,这时只需在“纵向分页时打印方式”组框中的【页眉页脚】下拉框中选择“仅首页打印”,在【标题】下拉框中选择“仅首页打印”就可实现。 预览后打印我们发现,第一页显示了页眉页脚和标题,而第二页页眉页脚和标题就被隐藏了,其打印预览效果如下图所示: 横向分页时打印方式 有时候一条记录包含的字段很多,一页纸的宽度装不下一条记录,我们一般设置为横向分页。横向分页时的打印方式是用来设置报表横向分页时页眉页脚和标题的打印情况。 横向分页时页眉页脚和标题都可以选择“每页都打印”、“仅首页打印”、“每页打印切分部分”和“仅首页打印切分部分”四种情况。 有时候横向分页时打印出来的多页报表分开存放,用户只查看自己感兴趣的那些页,这时为了让每一个用户都查看到页眉页脚和标题信息,就需要在每一页报表中都打印上页眉页脚和标题。在横向分页时打印方式组框中的【页眉页脚】下拉框中选择“每页都打印”,【标题】下拉框中选择“每页都打印”,即可实现在每一页报表中都打印页眉页脚和标题。其打印预览效果如下图所示: 有时用户要求横向分页时仅首页打印页眉页脚和标题,其他页就不打印了。在横向分页时打印方式组框中的【页眉页脚】下拉框中选择“仅首页打印”,【标题】下拉框中选择“仅首页打印”,即可实现仅在首页报表中打印页眉页脚和标题。其打印预览效果如下图所示: 3、每页打印切分部分 有时用户要求横向分页时每页打印切分部分,然后把打印出来的每一页横向粘贴起来,形成一个完整的报表,这时就需要使用横向分页的“每页打印切分部分”。在横向分页时打印方式组框中的【页眉页脚】下拉框中选择“每页打印切分部分”,【标题】下拉框中选择“每页打印切分部分”,其打印预览效果如下图所示: 4、仅首页打印切分部分 有时用户要求横向分页时仅首页打印切分部分,其他页不打印,这时就需要使用横向分页的“仅首页打印切分部分”。在横向分页时打印方式组框中的【页眉页脚】下拉框中选择“仅首页打印切分部分”,【标题】下拉框中选择“仅首页打印切分部分”,其打印预览效果如下图所示: 表头表尾打印方式 表头表尾打印方式用于设置报表打印时表头表尾的打印情况。 表头表尾的打印方式分为行和列两类,行可以设置报表头和报表尾的打印,它分为仅首页打印和每页都打印两种。列可以设置左表头的打印,它也分为仅首页打印和每页都打印两种。 1、仅首页打印 有的用户要求仅在第一页显示表头表尾,其他的页就不显示了,比如报表的宽度大于打印纸的宽度,我仅在第一页打印表头表尾,其他页不打印,报表打印完成后我把两页横向粘在一起共享第一页的表头表尾。如果在行上设置为仅首页打印,则报表头/报表尾区域仅首页打印;如果是在列上设置仅首页打印,则左表头仅在首页打印。 将【表头表尾打印方式】中的【行】设为“仅首页打印”,【列】设为“仅首页打印”。其打印预览效果如下图所示: 2、每页都打印 有的用户为了方便在每一页都能看到表头表尾信息,他们要求每页都显示表头表尾。将【表头表尾打印方式】中的【行】设为“每页都打印”,【列】设为“每页都打印”。其打印预览效果如下图所示: 分页方式 报表的分页方式有按纸分页、按行分页、不分页三种。 1、按纸张分页 按纸张分页指按设定的打印纸类型自动进行分页,超出纸张的部分会在下一页打印,这种分页方式适用于用户对一页纸上打印几条记录没有要求。其打印预览效果如下图所示: 2、按行分页 有时用户要求在一张纸上固定打印指定行数的记录,我们可以使用按行数分页来实现。按行分页是指按设定的每页显示的数据行数自动进行分页,超出设定的行数的数据在下一页打印。我们将【分页】中的【分页方式】设为“按行分页”,在【每页行数】编辑框中输入15,则每页打印15行的按行数分页效果如下所示: 按行分页,可以指定固定行数,也可以动态指定,都可以在【每页行数】中设置。 注意:如果报表选择了按行分页,则该报表不允许进行缩放打印 3、不分页 有时为了便于查看所有的报表信息,用户要求把报表中的所有信息打印在一页纸上,我们可以使用不分页来达到这个目的。套打的时候,将需要套打的票据扫描成图片,插入到报表设计的界面上,然后依照底图进行报表描绘,打印时报表信息连同底图一起打印,这时为了保证打印出来的报表不错位也要使用不分页。我们将【分页】中的【分页方式】设为“不分页”。其打印预览效果如下图所示: 页眉页脚边框 页眉页脚边框有默认、采用设计时边框两种。 页脚最上方的单元格上边框如果未设置线型,则会根据页眉页脚边框的取值决定是否采用与页脚上方单元格相邻的单元格的下边框线型。 每页行数 如果“分页方式”是按行分页则可以在此设定每页显示数据的行数。该行数为数据区行数。 【每页行数】可以固定指定行数,也可通过参数实现动态分页,点击【每页行数】后的,将会弹出表达式编辑框,在此可设置参数表达式实现动态分页,如下图所示: 其打印预览效果如下图所示: 分栏数 分栏数用于设置报表打印或导出时的缺省纵向分栏数。我们常常会遇到一些列数很少行数很多的报表,这种报表窄窄长长,打印在一张A4纸上,横向留出大片空白,不但浪费纸张而且不美观,不方便用户查阅。分栏可以在打印纸上横向布局多列报表,这样既美观又节约纸张,还方便浏览报表。分栏后,表头会在每栏中重复,但是报表的标题可以只出现一次。 将【分页】中的【分栏数】设为:3,其打印预览效果如下图所示: 分栏时重复组头 分栏时重复组头用于设置在分栏时对分组表头的重复显示的控制。 分页监听器类 本菜单可设置分页监听器类,该类需实现com.raqsoft.report.usermodel.IPagerListener接口,有关接口中的方法介绍可参见《程序员参考》自定义分页监听器类小节。 导出属性: 在报表属性编辑界面中切换到“导出”标签页,设置报表是否导出背景图片、导出为PDF文件、Excel文件和Word文件时,该文件的密码和权限。如下图所示: 不导出背景图片 设置报表导出时是否导出背景图片。 导出文件名 设置报表文件导出时默认的文件名称。属性值可设置为常数或表达式。 当设置为空值时,默认名称为报表的文件名。该属性仅在web端导出时有效。 注:使用表达式时,不支持引用单元格,可引用参数或宏。 不导出如下URL 设置报表单元格的超链接在导出时哪些URL不导出,可通过增加按钮增加不导出的URL,通过删除按钮删除选中的已经添加的URL。 PDF 设置报表导出为PDF文件时,该文件的密码和权限。 用户密码:查看导出的PDF文件时用户需要输入的密码,此类用户只能浏览PDF文件。 主密码:编辑导出的PDF文件时用户需要输入的密码。 文档权限:可以给导出的PDF文件设置权限,在相应权限前打上对勾就可以了。 性能优先:导出或flash打印用性能优先时,使用连续串导出,不逐字导出,导出速度加快,存储文件变小,但是由于PDF跟java的文字细微差异,会有个别差异;如不勾选性能优先则输出到PDF或者svg是逐字逐坐标输出,速度慢,但坐标跟界面完全一致。 Excel 文档密码:设置打开该Excel文档时需要输入的密码。属性值可设置为常数或表达式。 注:使用表达式时,以等号开头,不支持引用单元格,可引用参数或宏。密码只允许用字符串,因此表达式的计算结果应为字符串。 不导出隐藏行/不导出隐藏列:设置隐藏的行或列是否导出。 单页Excel是否设定分页符:在单页导出的Excel中,是否按照和报表相同的分页位置设定Excel中的分页符,使Excel中有相类似的分页效果。 隐藏Excel网格线:设置导出的Excel文件是否隐藏网格线。 不导出批注:设置是否导出批注(在属性列表WEB的提示中增加批注)。 Word 文档密码:设置打开该Word文档时需要输入的密码。 其他属性: 在报表属性编辑界面中切换到“其他”标签页,设置报表的报表侦听器类和有效性验证脚本。如下图所示: 报表侦听器类 本菜单可设置报表侦听器类,该类必须继承com.raqsoft.report.usermodel.IReportListener,并实现beforeCalc()、afterCalc()方法,报表计算前后的处理代码分别写在这两个方法中。有关接口中的方法介绍可参见《程序员参考》报表计算处理类小节。 归并法求交集时最小记录数 用于设置采用归并法求交集时数据集必须达到的最小记录数,可用于交叉报表扩展时提速。<0表示不会采用归并法求交集。 例如:有一个交叉报表,数据集中有240万行数据。如果设置归并法求交集时最小记录数为250w。那这个例子就不能使用归并法;如果设置归并法求交集时最小记录数为230w就可以使用归并法。提速效果非常明显。 有效性验证脚本 用于给参数模板增加校验功能。参数模板定义了一个系统js函数:getParamValue(paramName),该函数用于取得参数模板中某个参数的值,paramName是参数名。 在参数模板的报表属性中填写一段用于校验的js程序,当提交参数时会调用这段程序。如果输入的参数全都满足要求,则返回true;某个参数不满足要求时,弹出信息,并返回false。 如下图:假如参数模板中有两个参数startDate和endDate,分别代表开始日期和结束日期,现在要求开始日期不能大于结束日期,写法如下: 背景图属性: 在报表属性编辑界面中切换到“背景图”标签页,设置报表的背景图信息,背景图可以是图片也可以是水印。如下图所示: 显示方式 设置背景图的显示方式:每页显示和不显示。 空白 清除背景图对象。 图片 样式:有左上、填充和平铺三种。 1.缺省样式为左上,此时背景图从报表左上角开始以图片原来的大小展现,不足的地方显示空白,多余的地方自动裁剪。效果如下图: 2.选择填充时,背景图缩放调整到报表大小。效果如下图 3.选择平铺时,背景图以图片原来的大小展现,自动拼接铺满报表。效果如下图 如果是要动态拼接图片路径,可以写表达式,比如:"D:/report/"+arg1 注:表达式中的路径分隔符用斜杠“/”或反斜杠“\”均可。由于反斜杠“\”在引号中被认作是转义字符,因此使用时如需输出“\”,则需要写“\\”。比如:if(arg1==1,"D:\\report\\p1.jpg","D:\\report\\p2.jpg") 例如:URL类型 水印 样式:设置水印的样式,有水平和倾斜两种。 字体:设置水印的字体格式。 字号:设置水印的字号。 颜色:设置水印颜色。 间距:设置水印间距。 例如:文本类型 效果如下图: 子报表属性: 在报表属性编辑界面中切换到“子报表”标签页,定义在报表中插入的子报表。如下图所示: 点击【增加】按钮,在子报表列表框中自动添加一个子报表。 点击【删除】按钮,在子报表列表框中删除选中的子报表。 定义子报表的名字,我们在用到子报表的地方就用这个名称来表示子报表。 URL类型 设置子报表的路径类型,有相对路径、绝对路径和url三种。 1、相对路径 相对路径在设计器中,是相对于工具-选项-文件中的应用资源路径;web发布时,是相对于raqsoftConfig.xml中Report里配置的home属性中的报表文件路径。 使用相对路径时,路径前不需要加斜杠“/”;绝对路径前需要带盘符或者斜杠“/”,带斜杠“/”方式的绝对路径,表示拼接上当前盘的根目录,例如该程序的根目录为D盘,那么/reportFiles即表示D:/reportFiles。 应用资源路径,如下图所示: 2、绝对路径 绝对路径是指你的子报表在硬盘上真正的路径。在“URL类型”列中选择“绝对路径”,双击“URL”编辑框,弹出“打开”对话框,如下图所示: 选择子报表所在的位置,点击【打开】按钮子报表的绝对路径就会自动的填入“URL”编辑框中。 3、URL 本菜单项的功能是用于设置表格里每一行的属性。 点击行首格,选中需要设置行属性的行,右键选择行属性或者点击报表-行属性,将弹出行属性对话框,如下图所示: 可在该对话框中设置指定行的行高、行类型、组头级别、行后分页、是否可见、分页填充属性,设置完后点击【确定】按钮即可。也可以通过点击行首格,选中某一行后,在设计器右边的行属性列表中的设置。 分页填充:对分页前的单元格,如果内容不能填满页面,大文本单元格也要以空白来实现填充。 行类型:用于标识当前行属于报表哪个区域。 分页页眉 分页页眉区位于页面的最上面,仅仅在打印和打印预览的时候出现,可选择每页打印还是仅首页打印,一般用于放置与页面有关的信息。 头标题 头标题区用于放置报表标题,以及一些报表抬头要显示的信息,例如:打印日期、报表单位、金额单位等。可选择每页打印还是仅首页打印。 报表头 报表头区一般用于放置报表数据列的列名称,可选择每页打印还是仅首页打印,分栏时每栏重复。 分组头 分组头区分页的时候每页重复,分栏时每栏不重复。按行数分页时,所指定的行数为分组头区和数据区行数之和。 “组头级别”用来设置多层分组的组表头级别。 举例一:三级分组表头。 设置前三行的行类型都为分组表头。设置第一行的组头级别为:1,它为第一级分组;第二行的组头级别为:2,它为第二级分组;第三行的组头级别为:3,它为第三级分组。分组头区分页的时候每页重复,打印预览效果如下: 举例二:一级多行分组表头。 设置前四行的行类型都为分组表头。设置第一行的组头级别为:1;第二行的组头级别为:2;第三行的组头级别为:3;第四行的组头级别为:4。一级分组包含四行,打印预览效果如下: ●一级分组表头可以包含多行,每一行的组头级别递增(如举例二)。多级分组表头每一级只能包含一行,每一级的组头级别递增(如举例一)。 数据 数据区一般放置报表从数据集中取到的数据。 报表尾 表尾区一般用于放置报表的一些汇总统计信息,以及常在报表表尾显示的一些信息。 尾标题 尾标题区用于放置报表尾标题,以及一些报表结尾要显示的注脚信息。可选择每页打印还是仅首页打印。 分页页脚 分页页脚区位于页面的最下面,仅仅在打印和打印预览的时候出现,可选择每页打印还是仅首页打印,一般用于放置和页面有关的信息。 ●纵向分区从上到下的顺序为:分页页眉区à头标题区à报表头区à分组头区à数据区à报表尾区à尾标题区à分页页脚区。 ●区域顺序从上到下不可颠倒。 ●除了数据区,其它区域可以不存在。 ●合并格不可跨越区域,否则分页时会出现混乱。 本菜单项的功能是用于设置表格里每一列的属性。 点击列首格,选中需要设置列属性的列,右键选择列属性或者点击报表-列属性,将弹出列属性对话框,如下图所示: 可在该对话框中设置指定列的列宽、列类型、列后分页、是否可见、手机上自动列宽等属性,设置完后点击【确定】按钮即可。也可以通过点击列首格,选中某一列后,在设计器右边的列属性列表中设置。 列类型:用于标识当前列属于报表哪个区域。 左表头列 表头列一般用来放置报表数据行的行名称。当报表宽度比纸张显示区域宽时需要设置表头列,分页时表头列可选择每页打印还是仅首页打印。如果选择仅首页打印,则左表头列仅首页打印。 常规列 常规列一般放置报表从数据集中取到的数据。 ●横向分区从左到右的顺序为:左表头列à常规列。 ●表头列可以不存在。 ●合并格不能跨越区域,否则分页时会出现混乱。 手机上自动列宽 该属性用于在手机端预览报表时,报表宽度自动匹配屏幕宽度,如果报表宽度小于屏幕宽度,那么报表中勾选了自动列宽的列会按比例加大列宽,使报表充满屏幕宽度,手机横屏与竖屏切换时,也会自动调整列宽,此功能仅能用于手机。 显示报表的jsp里
当报表中没有设置自动列宽时,所有列都自动加宽匹配屏幕宽度。当有指定列时,则只会指定列加宽。
本菜单项的功能是用于设置报表和填报表边框以及斜线的样式、颜色等属性。
以报表为例,选中需要设置边框的单元格,点击报表-边框设置,或者右键菜单-边框设置,将弹出边框设置界面,如下图所示:
通过该界面可选择边框、设置边框线条的颜色、风格和粗度,设置完成后,点击【确定】按钮即可。这些属性也可以通过工具栏按钮设置。
边框的设置分为斜线和边框两部分。
斜线
可以给选中的单元格加入斜线,设置斜线的颜色,风格和粗度。
在很多报表中,报表的表头左上角那个格子都有斜线,单元格斜线这个属性就是应这个需求而来的。
一个单元格斜线最多可以两条,斜线分隔的几个数据值在单元格的值属性中用逗号分隔(英文逗号)。
举例:
斜线单元格的数据值为:姓名,科目,成绩
边框
可以给某一单元格或者整个表格设置边框。
●合并单元格同一侧的边框只有一种样式,不能分段以不同样式展现。
左上角的是边框宽度为0.75mm,颜色为红色的实线边框
右上角的是边框宽度为1.5mm,点划线式的边框
左下角的是边框宽度为0.75mm,上下有边框线的虚线式边框
右下角的是边框宽度为0.75mm,只有下方有边框线的双线式边框。
另外需要注意的是:合并单元格的某一边边框都是一致的,不能分段做不同设置。一旦对紧挨的小格子设了边框,就会连合并格的整条边都设上。
如下图:
如果对合并单元格紧邻的左上角单元格设置双线式边框,预览效果是:合并格的整条边都设上了边框。
如果要避免这种效果,我们可以在该合并格上插入一行,然后将插入的行高度缩小,如图:预览效果:
本菜单项的功能是帮助用户设计各种类型的统计图,以使报表中的信息更直观的展现。
设置好统计图的属性,点击【确定】按钮,设计器中选中的单元格就自动的插入了统计图。
图形类型及数据:
把统计图属性定义界面切换到“图类型及数据”标签页,如上图所示。
数据集
当统计图数据需要直接引用数据集字段或者参数值时,可通过数据集下拉列表选择数据引用方式。
(一)选择参数
参数:
选择参数后,图数据下拉中会自动列出当前参数列表,每项的参数显示格式为@参数名[参数描述]
(二)选择数据集名称
ds1数据集:
选择数据集名称后,如下图所示,图数据的下拉列表会自动将数据集的字段列出可供选择:
统计图类型
柱形图
柱形图是用一个单位长度表示一定的数量,根据数量的多少,画成长短相应成比例的柱形,并按一定顺序排列起来的统计图。它不仅能够显示每组中的具体数据,而且易于比较数据之间的差别。
●举例:统计某一地区客户所在的城市的数目
首先,在统计图类型下拉框中选择统计图类型-柱形图。
其次,编辑分类轴和系列。详见分类轴和系列小节。
点击【确定】按钮,柱形图就做好了。预览效果如下:
三维柱形图
三维柱形图是将柱形图采用三维立体的形式进行展示,使统计图看起来具有立体感。
在上述过程中,只需将统计图类型选择为三维柱形图,其他步骤皆与柱形图一致。
效果图如下:
三维簇状柱形图
三维簇状柱形图是在柱形图的基础上,先按照分类轴中的数据进行分类,然后再将每一个分类中的数据在系列中以柱形图的形式展现出来。
首先,在统计图类型下拉框中选择统计图类型-三维簇状柱形图。
点击【确定】按钮,三维簇状柱形图就做好了。预览效果如下:
堆积柱形图
堆积柱形图的原理同三维簇状柱形图一样,只是在显示系列的时候采用的是柱形的堆积。
其设置步骤基本与三维簇状柱形图一致,只需要在上述过程中,将统计图类型选择为堆积柱形图,其他步骤均不变。
三维堆积柱形图
三维堆积柱形图是用三维堆积柱状的形式展现报表中的数据,使统计图看起来具有立体感。
其设置步骤基本与堆积柱形图一致,只需要在上述过程中,将统计图类型选择为三维堆积柱形图,其他步骤均不变。
饼形图
饼形图时采用饼状的形式展现报表中的数据,是统计图最常用的形式之一。一般以一个圆的面积表示总体,以扇形面积表示占总体的百分数。饼形图可以比较清楚地反映出部分与部分、部分与整体之间的数量关系。
其设置步骤基本与柱形图一致,只需要在设置过程中,将统计图类型选择为饼形图,其他步骤均不变。
三维饼形图
三维饼形图是将饼形图的以三维立体的形式展示出来,增强图形的立体感。
其设置步骤基本与饼形图一致,只需要在设置过程中,将统计图类型选择为三维饼形图,其他步骤均不变。
折线图
以折线的上升或下降来表示统计数量的增减变化的统计图,叫作折线图。折线图在表示可数量的多少的同时,还可以反映同一事物在不同情况下的发展变化的情况。
其设置步骤基本与饼形图一致,只需要在设置过程中,将统计图类型选择为折线图,其他步骤均不变。
另外,折线曲线图还可以设置折线的线型及折线粗度,详见图形特性小节。
曲线图
曲线图同折线图一样,不仅可以表示数目的多少,还可以反映同一事物在不同情况下的发展变化情况,只是在展现形式上,曲线图采用了平滑的曲线。[Show?]
其设置步骤基本与饼形图一致,只需要在设置过程中,将统计图类型选择为曲线图,其他步骤均不变。
●曲线类型
润乾报表还提供了两种不同类型的曲线,使得用户根据自己当前的点的分布情况自己选择一个最合适的曲线。
拉格朗日类型:根据拉格朗日函数绘制曲线。一般情况下,拉格朗日类型比较容易越界,建议少用。
阿克玛类型:一阶光滑(一阶导数连续),光滑程度较低,在取样点少的时候图形不那么好看,但是取样点多的时候不容易越界;
三次样条插值类型:二阶光滑(二阶导数连续),光滑程度较高,在取样点少的时候图形比较好看,但是取样点多的时候容易越界;
下面为阿克玛类型和三次样条插值类型在取样点多和少时的比较图:
●曲线类型的设置
首先在统计图单元格右键-统计图;
接着,在打开的统计图属性定义界面中设置统计图类型为曲线图;
最后,在统计图属性定义界面上点击“其他特性”tab标签页,在曲线图中就可设置曲线图类型了,见下图:
三维折线图
三维折线图是将折线图的以三维立体的形式展示出来,增强图形的立体感。
其设置步骤基本与折线图一致,只需要在设置过程中,将统计图类型选择为三维折线图,其他步骤均不变。
区域图
将报表按照区域的形式展现出来。
其设置步骤基本与折线图一致,只需要在设置过程中,将统计图类型选择为区域图,其他步骤均不变。
三维区域图
三维区域图是将区域图的以三维立体的形式展示出来,增强图形的立体感。
其设置步骤基本与区域图一致,只需要在设置过程中,将统计图类型选择为三维区域图,其他步骤均不变。
条形图
条形图的展现与柱形图一致,只是根据一些特殊的要求,需要将柱形水平显示,于是润乾报表就设计了条形图。
其设置步骤基本与柱形图一致,只需要在设置过程中,将统计图类型选择为条形图,其他步骤均不变。
三维簇状条形图
三维簇状条形图的展现与三维簇状柱形图一致,只是根据一些特殊的要求,需要将簇状柱形水平显示,于是润乾报表就设计了三维簇状条形图。
其设置步骤基本与三维簇状柱形图一致,只需要在设置过程中,将统计图类型选择为三维簇状条形图,其他步骤均不变。
堆积条形图
堆积条形图的展现与堆积柱形图一致,只是根据一些特殊的要求,需要将堆积柱形水平显示,于是润乾报表就设计了堆积柱形图。
其设置步骤基本与堆积柱形图一致,只需要在设置过程中,将统计图类型选择为堆积条形图,其他步骤均不变。
三维堆积条形图
三维堆积条形图的展现与三维堆积柱形图一致,只是根据一些特殊的要求,需要将三维立体堆积柱形水平显示,于是润乾报表就设计了三维堆积条形图。
其设置步骤基本与三维堆积柱形图一致,只需要在设置过程中,将统计图类型选择为三维堆积条形图,其他步骤均不变。
散列图
散列图是将报表中的数据按照数值的大小,在二维坐标系中分散的排列起来。散列图仅仅显示报表中数据的多少。
首先,在统计图类型下拉框中选择统计图类型-散列图。
点击【确定】按钮,散列就做好了。预览效果如下:
三维散点图
三维散点图是将散点图的以三维立体的形式展示出来,增强图形的立体感。
其设置步骤基本与散列图一致,只需要在设置过程中,将统计图类型选择为三维散点图,其他步骤均不变。
时序状态图
状态表达式:状态数据,一般是某个扩展单元格的值,填写单元格名称即可。
●举例:做一张反映每个频道在各时段的状态图。
首先,在统计图类型下拉框中选择统计图类型-时序状态图。
●当统计图类型为时序状态图、甘特图和里程碑图时,分类轴和系列是无效的。
点击【确定】按钮,时序状态图就做好了。预览效果如下:
标签间隔/标签单位:设置横轴标签的间隔和单位。标签单位有年、月、日、时、分、秒六种选择。若标签间隔为1,标签单位为月,则横轴标签以每月为间隔标示。
其次,添加分类轴和系列。
双轴柱线图
在一些业务需求中,为了对两套数据进行清晰的比较,需要在一条横轴上同时展现两套数据。在润乾报表中,针对这种需求提供了双轴柱线图和双轴折线图。
●举例:做一张能同时反映订单数和运货费情况的双轴柱线图。
设计模板如下:
A3单元格中的统计图定义如下:
首先,在统计图类型下拉框中选择统计图类型-双轴柱线图。
其次,定义一个分类轴和两个系列。分类轴即为图中的横轴定义,两个系列分别为柱和线的定义,第一个为柱,第二个为线。
点击【确定】按钮,双轴柱线图就做好了。预览效果如下:
双轴折线图
双轴折线图与双轴主线图一样,都是为了对两套数据进行清晰的比较,只是在展现形式上有所不同而已,双轴折线图采用了两条不同颜色折线来展示不同的数据。
●举例:做一张能同时反映订单数和运货费情况的双轴折线图。
A5单元格中的统计图定义如下:
首先,在统计图类型下拉框中选择统计图类型-双轴折线图。
其次,定义一个分类轴和两个系列。分类轴即为图中的横轴定义,两个系列为统计图中的两条线。
点击【确定】按钮,双轴折线图就做好了。预览效果如下:
双轴堆积折线图
双轴堆积折线图是双轴图和堆积图的结合,首先可以在显示系列的时候采用的是柱形的堆积。其次是可以清晰的展现两套数据。
●举例:做一张能同时反映每个同学各科成绩和每科最好成绩的双轴堆积折线图。
首先,在统计图类型下拉框中选择统计图类型-双轴堆积折线图。
其次,定义一个分类轴和两个系列。勾选“使用指定轴”。
雷达图
上面的雷达图直观的反映了一个产品在各个方面的表现,并可以直观的估计产品的综合价值,有时候我们可以直接拿中间的多边形的面积做为产品综合质量的参考。
●举例:做一张能反映产品各方面性能的雷达图。
首先,在统计图类型下拉框中选择统计图类型-雷达图。
其次,定义分类轴和系列。分类轴为图中圆周上各个项目的定义,系列为径向数值的定义。
点击【确定】按钮,雷达图就做好了。预览效果如下图所示:
甘特图
项目表达式:任务列表,对应的单元格为任务表达式。
状态表达式:任务或项目当前所处的状态。
●举例:做一张反映公司项目进度的甘特图。
首先,在统计图类型下拉框中选择统计图类型-甘特图。
点击【确定】按钮,甘特图就做好了。预览效果如下:
仪表盘
仪表盘实质上和直角坐标图没有区别,只是把原来的横轴画成了圆形,横轴的值就标度在圆周上,纵轴的值用颜色涂在圆周上,指针指向的位置是当前的数值。需要注意的是图中的指针,指针的那条数据不能成为圆上的一种颜色,所以必须严格区分。
在润乾报表中,将需要作为指针位置的那条数据的纵轴对应值写为“value”,就可以被识别为指针位置。
●举例:做一张能反映温度情况的仪盘表。
首先,在统计图类型下拉框中选择统计图类型-仪表盘。
其次,定义分类轴和系列。分类轴即为圆周上刻度的定义,系列即为圆周上颜色的定义。
点击【确定】按钮,仪表盘就做好了。预览效果如下图所示:
里程碑
里程碑图中分类轴和系列不用定义,定义计划完成表达式、实际完成表达式、项目表达式。
计划完成表达式:该任务计划完成日期,对应的单元格为日期型表达式,如:2006-01-01。
实际完成表达式:该任务实际完成日期,对应的单元格为日期型表达式,如:2006-01-01。
项目表达式:每一个任务或项目的列表,如:主厂房区域基础施工到零米。
●举例:做一张反映任务完成情况的里程碑图。
首先,在统计图类型下拉框中选择统计图类型-里程碑图。
点击【确定】按钮,里程碑图就做好了。预览效果如下:
立体仪表盘
将仪表图采用三维立体形式展示出来,增加统计图的立体感。具体设置同仪表盘一致,只需在选择统计图类型时选择立体仪表盘,其余步骤均与仪表盘一致。
全距图
这张图表示了员工李芳完成的订单总价在所有员工中处在的位置。
图中横轴表示订单总价,没有纵轴,横向的柱表示所有员工的订单总价的范围,左端为最小值,右端为最大值,中间的黄色分割线为平均值,左侧比平均值低的部分为红色,右侧比平均值高的部分为绿色,蓝色的稍长一点的分割线为所查询的员工李芳处在的位置。
全距图与工字图很类似,它就相当于把工字图中的一个“工”字拿过来横放。不过在这个例子中,业务逻辑并不与工字图中的相同。
●举例:做一张能反映李芳完成的订单总价在所有员工中所处位置的全距图。
首先,在统计图类型下拉框中选择统计图类型-全距图。
其次,定义分类轴和系列。分类轴定义没有意义,因为只有一条数据,一个分类。在添加了分类轴后,下方会自动添加四个系列,而且不能更改,因为这是全距图的规则。四个系列分别指定最大值、最小值、平均值和当前值。全距图中不会显示图例,所以系列并没有系列标题可选。
点击【确定】按钮,全距图就做好了。预览效果如下图所示:
工字图
为了满足用户表现一组数值的变化范围、均值和当前值等数值的大小比较关系的需求,润乾报表提供了工字图。
该图表现了公司各个销售员的销售订单总价情况。横轴为各个员工,纵轴为订单总价金额,每个“工”字的上面一横表示订单总价的最大值,下面一横表示订单总价的最小值,红点表示平均值,黄点表示当前值的位置。这个当前值可以由用户随意指定,用来放在图表中与整体数据比较,靠近0轴线的红绿条子表示差值,即当前值与平均值的差值,为了便于比较而放在0起点的横轴上,正值为向上的绿色条子,负值为向下的红色条子。
●举例:做一张能反映公司各个销售员的销售订单总价情况的工字图。
首先,在统计图类型下拉框中选择统计图类型-工字图。
其次,定义分类轴和系列。分类轴即为图中的横轴定义,在添加了分类轴后,下方会自动添加四个系列,而且不能更改,因为这是工字图的规则。四个系列分别指定最大值、最小值、平均值和当前值,后面的系列标题就是系列显示在图表中的标签,可以随便取。
点击【确定】按钮,工字图就做好了。预览效果如下图所示:
仅用前几条数据记录来画统计图
有时统计图的数据分类非常多,画出的图形过于密集,失去了统计图的可读性,因此往往取数据值最大的前几条记录来制图。用在饼图的情况比较多,分类过多时,饼图的可读性最差。
当仅用前几条数据来画图时,为了保证数据的完整性,系统会把剩余的数据合并成“其他”,作为单独一个分类来显示,如下图所示:
分类轴
分类轴相当于横轴。
例如要画学生各科成绩的统计图,那么是按学生来分类的,所以显示学生姓名的单元格就是分类轴,假如该单元格位于A2,则填写该单元格的名称,如:=A2。
一个统计图一般只有一个分类轴定义,但有些统计图会有多个分类轴定义,此时点击一个分类轴时,下面的“系列”组框中显示的就是与它对应的系列定义。
统计图分类轴的定义可以是单元格也可以是常数。
该属性在统计图类型为除时序状态图、甘特图、里程碑图以外的类型时有效。
●统计图定义里,所有表达式等于号开头。
系列
用来画统计图的一类数据叫一个系列,一个分类轴可以对应多个系列,系列由系列名称和系列值组成。例如用学生数学、语文、英语成绩来画统计图,那么每门学科就分别为一个系列。
系列名称的值可以是单元格也可以是常数。
注:系列标题通常可以不填。如果想要web预览时,鼠标悬停能显示Tip提示信息,需要在系列标题处设置上相应的内容。
预览效果是:
使用指定轴
只在双轴统计图中才能被勾选,并且在勾选使用指定轴以后,才可以自定义哪些系列用右轴,哪些系列用左轴,如果不勾选,就算指定了左右轴,系统也只会平均分配所有系列值到左右轴。
时序状态图、甘特图及里程碑图数据
详见统计图类型中时序状态图、甘特图及里程碑图小节。
图形特性:
把统计图属性定义界面切换到“图形特性”标签页,“常规”标签页如下图所示:
统计图标题
统计图标题指统计图的文本标题,一般显示在图形的上方。如图1.4.7.2-1中的“学生成绩统计图”。
可以在统计图标题后边的下拉框中选择统计图标题的位置:中对齐、左对齐或者右对齐。
横轴标题
横轴标题指横轴坐标上的文本标题,一般显示在坐标轴的下方。如图1.4.7.2-1中的:学生。
可以在横轴标题后边的下拉框中选择横轴标题的位置:中对齐、左对齐或者右对齐。
纵轴标题
纵轴标题指纵轴坐标上的文本标题,一般显示在坐标轴的左边,可以横向显示,也可以纵向显示。如图1.4.7.2-1中的:成绩。
可以在纵轴标题后边的下拉框中选择纵轴标题的位置:居中、靠上或者靠下。
图形格式
统计图输出支持JPG、GIF、PNG、SVG、FLASH五种图形格式。其中JPG格式的图形边缘比较模糊。GIF格式的图形边缘比较尖锐,仅支持256色。PNG格式的图形边缘效果界于JPG和GIF之间是比较理想的一种。使用SVG格式的图形时,可在浏览器端画图,web上的统计图文字可被选中。如果选择FLASH格式,则统计图在页面上展现时具有FLASH效果。
报表绘制统计图时为了使曲线看起来光滑,所以对图形做了平滑处理。因此绘制饼图时会产生很多中间色,由于GIF格式最多支持256色,所以饼图在使用GIF格式时,通常会报“ToomanycolorsforaGIF”异常,建议遇到这类异常时不要使用GIF格式。
仪表边框
仪表边框指仪表盘边框的宽度,值为边框与半径的百分比值。仅适用于立体仪表盘。
刻度色宽
刻度色宽指仪表盘着色区的宽度,值为着色区宽度与半径的百分比值。
图中显示数据
图中进行数据标识,有无、统计值、百分比、名称和值、名称和百分比、标题六个选项。
折线粗度
折线统计图及双折线统计图中设置折线的粗细度。
(注:数据点的大小随折线的粗度的改变而发生相应的改变)
线型
折线统计图及双折线统计图中的折线的线型。
右轴显示数据
右轴进行数据标识,有无、统计值、百分比、名称和值、名称和百分比、标题六个选项。
百分比、名称和百分比仅对堆积柱形图有效。
图中显示数据格式
如果需要在图中进行数据标识,那么该数据的格式需要进行定义,例如想在图中显示温度可以把数据格式设置为:##°C,如下图。
柱形或条形图间距
柱形图或条形图的柱子之间的间距。
统计值的起始值/统计值的结束值/统计值标签间隔
有时候统计图的统计值非常大,而不同分类和序列之间的数据差异相对很小。为了能够明显标识出不同分类和系列的数据差别,往往在图中对某一段数据区域进行局部放大,因此需要定义统计值的起始值、结束值和统计值标签间隔。
举例:有一个地区订单数量统计图,每一个地区的订单数量都集中在1000到2000之间,不设置统计值的起始值/统计值的结束值/统计值标签间隔属性,直接画出统计图如下:
如果我们把统计值的起始值设为1000,统计值的结束值设为2000,统计值标签间隔设为100,则画出的统计图如下:
●注意:统计值的起始值、结束值和统计值标签间隔三个属性要同时设置才起作用。
统计值单位
用来设置统计值的计量单位,有无缩放、自动计算、千、万、百万、千万、亿、十亿、百分之一、千分之一、万分之一、百万分之一等选项。统计值单位举例如下图所示:
统计值最少刻度数
统计值在数轴上显示的刻度最少个数。
网格线风格
网格线风格指统计图上的刻度线风格,可以选择不出现。
标题与图形的间距
图形区与标题之间的距离。
分类轴标签间隔
分类轴各标签之间的间隔。
其他堆积系列
设置将堆积图中的某一系列单独显示,属性值为系列名称。该属性只在统计图类型为堆积图时有效。
网格线位置
设置图形中分类轴和数值轴的网格线位置。
数值轴:
全部:
设置图形中分类轴和数值轴的网格线风格。
“复选项”标签页如下图所示:
标注数据点
折线图中用于标注数据位置的方框和圆点,该属性只在统计图类型为折线图时有效。设置了该属性,相对于每个分类标签,折线上都有一个标注点。
标注趋势
是否在折线图中标注前后数据位置变化的趋势。
忽略Null值
值为空的记录是否包含在统计图中。
数据重叠显示
相邻数值或标签重叠时是否显示后一数值和标签。
仪表值刻度
设置是否按照仪表数据来描绘刻度
饼图中分离一扇显示
设置是否将饼图中的一扇分离出来显示
绘制数据表
设置是否绘制数据表
数据表值居中
设置数据表中的值是否居中
显示柱顶统计值
设置是否显示柱顶统计值
颜色渐变
图形是否需要颜色渐变。
三维图形时,设置颜色渐变属性后坐标轴会自动根据坐标线颜色绘制轴平台,显示效果如下:
颜色不变颜色渐变
图形透明
图形是否需要透明的效果,此选项主要针对三维的图形。
阴影
是否为统计图标注阴影。
凸出边框
在柱形图等图中,凸出统计图的边框。
丢弃[其他]分类
详见仅用前几条数据记录来画统计图小节。
仪表盘刻度位于颜色末端
是否将仪表盘刻度位于颜色末端。
当使用仪表盘来描述温度时则可以不勾选该复选框,因为对温度的划分通常是两者之间的一个范围,而不是一个固定的值。比如-10度为严寒,10度为寒冷,那么使用取两者之间的一个范围时,-10度到0度为严寒,0度到10度为寒冷。
原点重合
是否从原点开始画图。
警戒线
对于柱形图和线形图,允许设置警戒线,当统计值等于或大于警戒值时,统计图上会以定义的颜色和线形标识出警戒线。点击警戒线组框中的【添加】按钮,可以添加警戒线,可以设置警戒线的名称、警戒值、线型、警戒线的颜色、粗度、标识警戒值等属性。例如我们定义了一条警戒线,当统计数超过10时就用红色的线标识出来。
预览效果如下:
显示外观:
把统计图属性定义界面切换到“显示外观”标签页,如下图所示:
全图背景色
设置全图区的背景色。
图形区背景色
设置图形区的背景色。
坐标线颜色
设置统计图轴线、图例边框、柱形图边框、饼图引出线的颜色和长度。柱形图边框还可以用来设置折线图中数据点的填充色,默认为透明。
网格线颜色
设置网格线的颜色。只有选择了有网格线时才能设置该网格线的颜色。
●在Excel里仅仅支持256色,而润乾报表支持任意的颜色,因此某些颜色导出Excel时可能会没有对应色,此时系统会找个最接近的颜色来代替。
图例位置
设置图例在统计图中的位置,有上边/下边/左边/右边/无共五个选项。
总按系列画图例
正常情况下图例是按照系列来画的,但是系列只有一项时,如果选择该选项,则图例仍然按系列来画,否则图例按照分类轴来画。
多系列图例
单系列时按分类轴画图例单系列时按系列画图例
图例纵/横向间隔
用来设置统计图图例的纵向和横向间隔,以便改变图例间的间距。
图例超链接/图形超链接
设置统计图图例上的超链接。在超链接属性中可能会用到@legend、@category和{APPMAP}。
@legend:指代当前图例的显示值。在超链接中引用@legend,报表引擎运算时会将其替换成当前图例的显示值。
@category:指代当前图例的分类值。在超链接中引用@category,报表引擎运算时会将其替换成当前图例的分类值。
{APPMAP}:指代web应用的相对路径,在超链接中引用{APPMAP},报表引擎运算时会将其替换成web应用的相对路径。
在图形超链接中若超链接为不以=开始的字符串时,报表引擎运算时会把@category、@legend等当成${@category}、${@legen},进行替换运算;若超链接为以=开始的字符串时,报表引擎运算时会把@category、@legend等当成参数,进行表达式运算。
举例一:图形超链接为不以=开始的字符串。
设置统计图图例上的超链接为:{APPMAP}/reportJsp/showReport.jsprpx=/订单.rpx&arg1=@category
在图例超链接中进行表达式运算有两个用途:1、@legend指代当前图例的显示值,如果我们想在超链接中使用当前图例的真实值,那么就要把@legend放到表达式中进行运算,由显示值得出真实值。2、有时地址栏中不支持中文,有中文就会产生乱码,而@legend或@category代表的值是中文时,我们就要对@legend或@category进行编码。
举例二:图形超链接为以=开始的表达式。
设置统计图图例上的超链接为:=’{APPMAP}/reportJsp/showReport.jsprpx=/订单.rpx&arg1=’+query(‘select供应商IDfrom供应商where供应商名称=’,@category)
@category代表供应商名称,我们在超链接中需要使用供应商ID,所以图例上的超链接中把@category作为query函数的参数来获得供应商ID。
举例三:图形超链接传递多个参数
设置统计图图例上的超链接为:{APPMAP}/reportJsp/showReport.jsprpx=/订单.rpx&arg1=@category&arg2=@legend&arg3={APPMAP}
如果超级链接中要传递多个参数时,各个参数中间用&符号分隔。
举例四:图形超链接传递中文参数
如果统计图所在的web页面与所链接的web页面的编码方式不同,那么超链接所传递的中文参数就不能在链接的页面上正常显示,所以一般要对超链接传递的中文参数进行转码运算。
设置统计图图例上的超链接为:
=’{APPMAP}/reportJsp/test.jsparg1=’+urlencode(category,‘GBK’)+’&bb=’+urlencode(‘传递的参数’,‘GBK’)+’&le=@legend’
统计图所在的页面的编码格式为GBK,而链接的test.jsp的编码方式为utf-8,这时我们就要对所传递的参数使用urlencode函数进行转码运算,这样才能保证传递的参数在test.jsp页面上的正常显示。
超链接目标窗口
当超链接被激活时,在目标窗口中打开。
超链接目标窗口有以下三种情况:
1、_self:当超链接被激活时,在当前窗口刷新显示。
2、_blank:当超链接被激活时,在新窗口中刷新显示。
3、目标窗口名:指定窗口名,当超链接被激活时,在指定窗口中刷新显示。
统计图配色方案
选择统计图颜色的配色方案,用户可直接使用报表提供的配色方案,也可以通过工具-统计图配色方案修改已有的或自定义新的配色方案。
左边距/右边距/上边距/下边距
用来设置统计图在全图区的位置。
刻度长度
设置坐标轴的刻度长度。
3D厚度
设置3D轴宽度占序列宽度的百分比。
分类间隔
设置类别间的间隔占序列宽度的百分比。
系列间隙
设置序列间的间隔占序列深度的百分比。
饼图旋转
设置饼图纵轴占横轴的长度百分比。
饼图厚度
设置饼型图的高度占半径的百分比。
字体设置
设置包括标题、横轴、纵轴标题、标签等字体、颜色、大小、旋转角度等属性。如果在非中文操作系统下,必须安装相应的中文安装包。如果这里用到的字体操作系统不支持,会导致统计图出不来。
其他特性:
把统计图属性定义界面切换到“其他特性”标签页,如下图所示:
状态条高度
设置时序状态图或甘特图状态条的宽度。
背景图
设置统计图的背景图。
注意:需要将“全图背景色”和“图形区背景色”设置为透明色,才能显示出背景图。
配置类型
背景图的配置类型分为URL路径与表达式两种。如果用户在报表的统计图中使用的背景图是一个图片文件,则选择配置类型为“URL路径”;如果用户在报表的统计图使用的背景图是一个表达式返回的byte数组,那么就需要选择配置类型为“表达式”。
样式
背景图的样式分为:左上、填充、平铺。
URL或表达式
URL支持绝对路径与相对路径。相对路径在设计器中,是相对于工具-选项-文件中的应用资源路径;web发布时,是相对于raqsoftConfig.xml中Report里home属性中的报表主目录。使用相对路径时,路径前不需要加斜杠“/”。
表达式的计算结果需为图片,如二进制流。
曲线图类型
设置绘制曲线时的曲线类型,包括:拉格朗日曲线、阿克玛曲线、三次样条插值曲线。
本菜单项的功能是帮助用户快速定义条形码。条形码是一种信息代码,用特殊的图形来表示数字、字母信息和某些符号。它是由一组宽度、反射率不同的条和空按一定的编码规则组合起来,用以表示一个完整数据的符号。
选中需要设为条形码的单元格,点击报表-条形码,或者右键菜单-条形码,将弹出条形码属性设置界面,在该界面中可根据需要设置合适的条形码属性,如下图所示:
设置好条形码的属性后,点击【确定】按钮,就可在选中的单元格中插入条形码。
条形码的码制类型,有Code39码、Code93码、Code128Auto码、Code128A码、Code128B码、Code128C码、CodaBar码、Datamatrix码、Ean13码、Ean8码、ITF码、UPCA码、UPCE码和QRCode码共十四种。
1、Code39:Code39是一种可供使用者双向扫描的分布式条形码,支持英文数字表达,最大优点是码数没有强制的限定,可用大写英文字母码,检验码可以忽略不计,长度是可变化的,通常用“*”号作为起始、终止符。目前Code39常用于工业、图书、以及票证自动化管理上。
2、Code128:表示高密度数据,字符串可变长,符号内含校验码。有四种不同版本:A,B,C,andAuto。
Code128A:包括所有大写字母、数字字符、控制字符(ASCII值为00-95的字符)以及7个特殊字符。
Code128B:包括所有大写字母、数字字符、小写字母字符(ASCII值为32-127的字符)以及7个特殊字符。
Code128C:包括100个数字(00-99)以及3个特殊字符。在用字符集Code128C时,用一个符号字符表示2位数字。终止字符都是:Stop。
Code128Auto:根据数据内容自动选择Code128A\Code128B\Code128C字符集,以最短的方式编码图形。
一般来说,如果条码内容是大写英文字母,用Code128A用Code128B是一样的,如果包含大小写字母,则要用Code128B,如果条码是由纯数字构成的,要用Code128C。Code128常用于工业、仓库、零售批发。
3、CodaBar:CodaBar是一种长度可变的连续型自校验数字式码制。数据内容有21个字符,10个数字0~9,以及.)"+","-","*","/","$",".",":"等7个特殊符号,加上A,B,C,D四个英文字母。其中A,B,C,D只用作起始符和终止符。常用于仓库、血库和航空快递包裹中。
4、Datamatrix是一种矩阵式二维条码,最小尺寸是目前所有条码中最小的,可分为ECC000-140与ECC200两种类型。可编码字元集包括全部的ASCII字元及扩充ASCII字元,共256个字元;条码大小(不包括空白区)为10×10~144×144;资料容量为235个文数字资料、1556个8位元资料、3116个数字资料。常用于电子、零售、政府。
5、Ean13:EAN13是比较通用的一般终端产品的条形码协议和标准,码标准码共13位数,系由「国家代码」3位数,「厂商代码」4位数,「产品代码」5位数,以及「校正码」1位数组成。主要应用于超级市场和其它零售业。
6、Ean8:EAN缩短码共有8位数,包括「国家代码」2位数,「产品代码」5位数,及「校正码」1位数。当包装面积小於120平方公分以下无法使用标准码时,可以申请使用缩短码。
7、UPCA:UPCA是最早大规模应用的条码,其特性是一种长度固定、连续性的条码。UPCA仅可用来表示数字,故只支持数字0-9,有一位检查码,是EAN码的前身。UPC的特性:仅提供数字编码,限制位数12位、需要检查码,主要应用:超市与百货业。
8、QRCode:QRCode是一种正方形的矩阵二维码符号,它具有一维条码及其它二维条码所具有的信息容量大、可靠性高、可表示汉字及图象多种文字信息、保密防伪性强等优点。
9、Code93:Code93是一种长度可变的连续型字母数字式码制。支持的字符集有44个,(0-9)十个数字,(A-Z)二十六个英文大写字母,以及八个特殊字符:“空格符”、“-”、“.”、“*”、“$”、“/”、“+”、“%”,字符集和Code39码支持的字符集一样。不过Code93码采用了双校验字符,密度比Code39码高,安全性也比Code39码高,所以,在面积不足的情况下,可以用Code93码代替Code39码。
10、ITF:ITF条码,又称交叉二五条码,主要用于运输包装,是印刷条件较差,不允许印刷EAN-13和UPC-A条码时应选用的一种条码。ITF条码是一种连续型、定长、具有自校验功能,并且条、空都表示信息的双向条码。ITF-14条码的条码字符集、条码字符的组成与交插二五码相同。它由矩形保护框、左侧空白区、条码字符、右侧空白区组成.
11、UPCE:UPCE条码符号的高度与UPCA条码符号相同,但长度大大缩短。UPCE是UPCA的简化形式,其编码方式是将UPCA码整体压缩成短码以方便使用,因此其编码形式须由UPCA码来转换。
格式
条形码就是一个图片,在此可设置图片的格式:JPG/GIF/PNG。JPG格式的图形边缘比较模糊。GIF格式的图形边缘比较尖锐,仅支持256色。PNG格式的图形边缘效果界于JPG和GIF之间是比较理想的一种。
JPG格式GIF格式PNG格式
字符集
设置条码内容的字符集,有UTF-8、GBK和ios-8859-1共三种字符集类型。
Logo仅支持RQCode类型(二维码)时有效,用来为二维码中间添加图片。
排错率
仅支持QRCode,排错率即是指二维码图标被遮挡多少后,仍可以被扫描出来的能力。排错率越高,则二维码图片能被遮挡的部分越多。
二维码排错率用字母表示,排错能力等级分为:L、M、Q、H四级:
L7%
M15%
Q25%
H30%
字体
条形码的字符注的字体。
字号
条形码的字符注的字大小。
显示文字
条形码是否显示字符注。
条形码字符注的文字对齐方式。
旋转角度
条形码的逆时针旋转角度。
内容
条形码所表示的数据。
这个属性是条形码的核心,如果没有数值,该条形码就没有存在的意义了。“内容”属性可以是常数、单元格、参数或者含单元格、参数的表达式。如果数值为单元格、参数或者含单元格、参数的表达式时,务必在数值前加等号。如:=A2。
本菜单项的功能是帮助用户设计第三方各种类型的统计图,例如百度Echarts。关于Echarts统计图的使用目前主要针对熟悉Echarts统计图并且可以独立编写js脚本画图的用户。用户通过润乾报表将报表数据传入Echarts图形,引入现有js模板或自定义js脚本来绘制各种类型的Echarts统计图,使报表中的信息得到更直观的展现。
模板的使用:
模板参数说明
安装产品后在[安装根目录]\chart目录有缺省提供的图形模板,熟悉Echarts图形使用的用户可在此基础上直接传递报表数据,使图形能根据动态数据灵活展现。
以标准漏斗图为例,打开模板后,模板内容如下所示:
varnames=${dataname};
varvalues=${datavalue};
varmydata=[];
vartemp=0;
varclen=names.length;
varvsum=[];
varstr="";
for(vari=0;i<2;i++){
str="";
str+="[";
vsum=values.slice(temp,temp+clen);
temp+=names.length;
for(varj=1;j str+="{value:"+vsum[j-1]+",name:'"+names[j-1]+"'}"; if(j>0&&j { str+=","; if(j==names.length) str+="]"; mydata[i]=str; //使用 require( [ 'echarts', 'echarts/chart/funnel' ], function(ec){ //基于准备好的dom,初始化echarts图表 varmyChart=ec.init(document.getElementById('${id}')); option={ …… //为echarts对象加载数据 myChart.setOption(option); ); 打开模板后,可通过上述红色部分的内容了解到该图形的基本信息,包括图形名称和参数介绍,参数介绍中详细说明了左侧参数列表里各个参数的数据类型。润乾报表安装包中所自带的模板都提供了如上所述的参数说明,方便用户根据自己的需要在左侧传入不同参数值。 JS模板的基本使用 以柱形图为例,模板使用步骤如下: 1、选中需要设为统计图的单元格,点击报表-第三方图形菜单项,或者右键菜单-第三方图形,在图形编辑窗口中点击【打开模板】按钮,缺省会直接指向[安装根目录]\chart目录,用户也可自行切换到模板的存放路径。 2、选择模板后,需对应参数名在左侧参数列表表达式中添加分类、系列、系列值。 参数列表中的参数值可以引用报表数据,在表达式中使用C1{}的引用方式获取报表扩展单元格数据为参数赋值,参数类型为数组。在js中需以${参数名}的方式获取参数值,如下: 3、设置好统计图的属性,点击【确定】按钮,设计器中选中的单元格就自动的插入了统计图。通过web预览查看第三方图形即可。 从模板的基本使用方法中可以看到,报表数据可以通过参数的形式动态传递给echarts模板,为了方便初学者和简单需求的用户能更快看到效果,我们提供了大量的echarts模板,用户只需要给模板参数传递合适的参数值,就能快速看到可视化效果。 这些模板里的参数需要传递什么形式的参数值,可以参考对应模板的参数注释说明,和我们demo应用中的实例。至于更高级的使用,期待做出更完美的效果,还需要有一定js基础的前端开发人员深入学习第三方图形。 由于第三方图形为其他开发者开发与维护,所以图形内容会不断更新修改。例如百度Echarts,通过以下介绍能够清晰地了解百度Echarts在润乾报表部署的步骤和流程。 2、将下载的echarts.min.js重命名为echarts.js并替换到[安装根目录]\report\web\webapps\demo\raqsoft目录下的echarts文件夹中,重启服务即可。 修改已有JS模板 如需对已有模板的图形进行调整,可直接在js脚本中进行修改,修改完成后可将模板另存为,方便以后再次使用时不用重新编辑模板。 以柱形图为例,通过参数控制统计图中工具栏的显示,并且将修改后的模板另存为,操作步骤如下: 3、添加参数控制柱形图中工具栏的显示,缺省工具条在js中是通过”show:true”的方式控制的,true为显示,false为不显示。如想通过参数动态控制工具条的显示,可以手动在左侧添加参数实现即可。 如下图所示,左侧添加toolboxshow参数,参数名可随便定义,但不可与其他参数重名,右侧使用${参数名}进行引用。 4、设置好统计图的属性,点击【确定】按钮,设计器中选中的单元格就自动的插入了统计图。toolboxshow参数值设置为false,不显示统计图中的工具条。web预览如下: 5、双击统计图单元格,点击【另存为模板】,输入文件名,将当前统计图的js模板另存为方便下次使用时通过【打开模板】直接使用。 模板参数类型 第三方图形可通过润乾报表传递不同数据类型参数,如字符串,数值,序列等。如需在右侧js模板内容中动态获取报表数据,可通过${参数名}格式获取,如${arg1}。点击【刷新】按钮可将右侧所有为${}格式的参数显示在参数列表中。 左侧参数值可为任意类型的参数。目前有三个固定参数,id(图形的唯一编号)、width(图形宽)、height(图形高),程序会自动填写,不会列出到左边参数面板。 通用参数类型说明: 字符串类型:可直接填写字符串值或返回值为字符串的表达式 序列:通过A3{}引用方式获取的报表数据,参数类型为数组,该引用方式通常可用于对分类、系列、系列值的取值,也可通过数据集.字段名获取,如ds2.product。 json串:可通过润乾报表提供的json函数对数据集做转换处理。具体json函数使用方法可以参见《程序员参考》json()小节。 自定义模板 目前润乾报表安装包提供了部分echarts图形模板,并且在模板中对数据做了灵活引用的处理,方便了初学者入手,对效果要求不太高的用户也基本满足,但如需对图形样式属性做修改或调整,或者所需图形在已有模板中不存在,需自定义模板,这都需要前端开发人员通过学习echarts官方说明去进一步完善。 在此我们介绍一下自定义模板时关于html转js模板以及对报表各种数据传递的处理的基本方法,请参见下面章节所讲内容。 HTML转js模板 如所需模板在已有模板中不存在,可直接将从Echarts官网获取的html示例手动转为js模板即可。接下来以两个例子进行详细说明。 (一)echarts2以韦恩图为例,具体步骤如下: 步骤1: html内容: