本章对一般单元格属性中的值、显示、段落、字体、扩展、超链接、分页、其他进行了详细的讲解。
本小节对一般单元格的属性值、显示格式、显示值进行了详细介绍。
值
单元格属性列表中第一项就是值。值是单元格的真实值,当单元格被引用时,引用的就是单元格的真实值
● 举例:表达式A1+B1,其运算结果就是A1单元格的值加上B1单元格的值。
显示格式
单元格属性列表中第二项是显示格式,用来设置值在报表展现时的显示格式。
● 举例:
如果该单元格的值是一个数值型的数据1.33333,我们希望显示的时候只显示小数点后两位小数,这个就是通过显示格式完成的,可以在显示格式属性值中编辑#0.00,预览可以发现,显示的数值就变成了1.33。
也可以双击显示格式属性值,在弹出的显示格式对话框中选择你需要的格式,确定即可,如下图所示:
显示值
单元格属性列表中第三项就是显示值,显示值是在报表展现时所显示的内容,仅仅用来显示,很少被引用,如果要引用单元格的显示值,需要用disp函数,例如:disp(A1) 代表A1单元格的显示值。
通常我们在数据表里取出的某个字段的值是一个代号,但我们展现出来的报表,并不希望显示代号,希望显示的是每个代号代表的具体值,这时就要用到显示值的属性。
显示值的定义有两种方式:单值和对照表
● 举例:
单值定义法:
1、例如:"中国",那么该单元格就显示为"中国"
2、例如:ds1.select(name,id == value()),这样根据当前单元格中的值从数据集ds1中找到与之相等的id,根据id,显示对应name字段的值。
对照表定义法:
map(list(0,1),list("男","女")),这样如果单元格中的数据值为0,则报表展现时,该单元格显示的就是男。同理,如果是1,则显示的是女。
本小节对一般单元格的可视、隐藏行、隐藏列、前景色、背景色、尺寸调整方式等进行了详细介绍。
可视
设置当前单元格是否可见,该属性值为true代表可见,false代表不可见。可以在行首格、列首格、一般单元格和报表首格里控制是否可见属性。
该属性可以是属性值也可以是表达式。很多时候,我们需要设定在满足某一条件时显示,不满足某一条件时不显示。这时,可在表达式中编辑条件表达式。
● 表达式举例:
if(@arg1=="raqsoft",true,false) 当参数arg1为raqsoft时,当前格可见,否则不可见
隐藏行
当前行是否隐藏,可以是属性值也可以是表达式
实现隐藏本行效果,可通过“隐藏行”属性和行首格的行属性中 “是否可见“属性实现。
如果在行首格设置“是否可见“属性,该属性会复制到该行的所有单元格的“隐藏行“属性里。
● 举例:
在A1单元格中编辑=to(1,10),希望当当前单元格的数据值为5时,隐藏该行,则应该在该单元格“隐藏行”,或者在行首格的行属性中“是否可见”属性表达式中编辑if(A1==5,true,false)。预览发现数据值为5的那一行隐藏了。
如果希望某一行里任何一个单元格里的值为负数时,该行就隐藏,则在该行行首格“隐藏行”属性表达式中编辑if(value()<0,true,false),该属性表达式会复制到该行扩展出来的所有单元格中。
注:在分栏报表中不允许存在隐藏行。
隐藏列
当前列是否隐藏,可以是属性值也可以是表达式。
实现隐藏本列效果可设在一般单元格中,也可以设在列首格中,至于什么情况设在一般单元格,什么情况设在列首格,规则与“隐藏行”相同,可参考前面所述。
前景色
单元格里文本的颜色
● 举例:如下图(左边的为默认的前景色<黑色>,右边的设置前景色为红色)
在此需要说明是:在Excel里仅仅支持256色,而润乾报表支持任意的颜色,因此某些颜色导出Excel时可能会没有对应色,此时系统会找个最接近的颜色来代替。
背景色
单元格的背景色
● 举例:如下图(左边的为默认的背景色<白色>,右边的设置背景色为红色)
在此需要说明是:在Excel里仅仅支持256色,而润乾报表支持任意的颜色,因此某些颜色导出Excel时可能会没有对应色,此时系统会找个最接近的颜色来代替。
尺寸调整方式
有四个选项:按设计尺寸不变/按单元格内容扩大/图片填满单元格/缩小字体填充。
1、如果设置为“按设计尺寸不变”,那么当该单元格里的数据超过单元格宽度的时候,只显示宽度范围内的数据。
2、如果设置为“按单元格内容扩大”,那么当该单元格里的数据超过单元格宽度的时候,单元格宽度可根据其数据内容调整。子报表或者图片单元格,也可以通过上面两个属性把子报表或者图片缩在单元格内,或者把单元格撑大。
3、如果设置为“图片填满单元格“,图片根据单元格的大小缩放图片,以保证图片填满单元格。
[ Show » ]
4、如果设置为“缩小字体填充“,那么当该单元格里的数据超过单元格宽度的时候,这个时候又不希望单元格被撑大,可以设置该属性,将字体缩小填充在单元格中。这个时候如果配合自动换行使用的话,单元格里的数据在缩小字体的同时,并折成多行显示。这样配合使用可避免单元格里的数据在一行里显示而将字体缩小的过于小。
本小节对一般单元格的自动换行、对齐方式、缩进进行了详细介绍。
自动换行
设置当前单元格的数据值长度超出单元格的宽度时,是否自动换行。
此属性一般适用于中文值字段,如果此属性打勾,当数据值长度超出单元格的宽度时,文字会自动换行,单元格自动被撑高。
例如某单元格的自动换行和缩小字体填充同时被选中,那么当文字超长时,会既折行又缩小字体填充,系统会根据格子的大小,自动选择一个最优的算法
● 举例:C3单元格中有这样一串文字
如果我们设置自动换行,则预览的结果是:
可以看到,单元格被撑高,折成多行显示;
如果把自动换行和尺寸调整的“缩小字体填充”结合起来使用,则预览的结果是:
可以看到,单元格宽度和高度都没变,字体缩小折成多行显示。
● 注意:
1.在报表中,除字符串以外的数据类型都不可以设置自动换行属性。
水平对齐
设置单元格数据在水平方向上的对齐方式:靠左、居中、靠右、两端对齐、分散对齐。
● 举例:
纵向对齐
设置单元格数据在垂直方向上的对齐方式:靠上、居中、靠下。
● 举例:
缩进
单元格数据值的缩进位置,缺省为0,此时数据值会紧挨着边框。一般设置为2-3比较合适。
★ 注意点:
1、一旦为单元格设置了缩进属性,则文字在单元格里会相对左或相对右或者相对左右缩进。如果水平对齐方式为左对齐,则相对左边缩进;如果水平对齐方式为中对齐,则相对左右两边缩进;如果水平对齐方式为右对齐,则相对右边缩进。
2、统计图最好不要设缩进,即缩进值最好为0,否则图形被压缩后,变形效果不好看。
3、交叉报表中的交叉单元格建议不要设置缩进。
● 举例:如下图(左边的缩进为0,右边的缩进为5)
本小节对一般单元格的字体大小、加粗、斜体、下划线进行了详细介绍。
字体
单元格的值/显示值的字体
★ 注意点:
如果服务器操作系统是linux、unix等非windows操作系统时,需要注意凡被使用到的字体,都必须在操作系统里安装,否则当报表打印、输出到PDF、统计图等时,会乱码或者变成小方框。一般要求安装相应的中文包,然后再安装jdk。如果已经安装了jdk,补救办法就是拷贝字体。
拷贝字体的方法:把windows操作系统下,…\WINDOWS\Fonts目录下的所有字体文件拷贝到服务器的jdk安装目录下的…\jre\lib\fonts子目录下即可。某些操作系统下如果这样拷贝还不灵,可能还需要打开…\jre\lib\font.properties文件进行修改。
字大小
单元格的值/显示值的字大小
● 举例:如下图(左边的为小四,右边的为二号字)
加粗
单元格数据是否显示为粗体
● 举例:如下图(左边的为设置粗体前,右边的为设置粗体后)
斜体
单元格数据是否显示为斜体
● 举例:如下图(左边的为设置斜体前,右边的为设置斜体后)
下划线
单元格数据是否带下划线
● 举例:如下图(左边的为不带下划线,右边的为带下划线)
运算结果为集合的函数,我们称为集合函数。集合函数包括:group(),select(),list(), query(),to()等。
to()函数举例:to(1,3)
计算结果为集合的表达式称为集合表达式。
计算结果为单值的表达式称为单值表达式。
当单元格的数据值表达式为集合表达式时,该单元格默认为可扩展单元格。否则该单元格默认为不可扩展。
扩展方式
单元格的扩展方式属性分为默认、横向扩展、纵向扩展、不可扩展四种。当单元格为可扩展单元格时,可以默认扩展方向,也可以为扩展单元格设置一个扩展方向,扩展可以有横纵两个方向,即横向扩展和纵向扩展,但一个扩展格同时只能有一个扩展方向。
1、默认
l 单元格的表达式为单值表达式时,该单元格默认为是不可扩展的。
l 单元格的表达式为集合表达式时,该单元格默认为是可扩展的。
l 可扩展单元格的主单元格为行首格或列首格时,该单元格默认为纵向扩展。
l 可扩展单元格的上主格横向扩展时,该单元格默认为横向扩展。
l 可扩展单元格的左主格纵向扩展时,该单元格默认为纵向扩展。
2、横向扩展
l 当可扩展单元格的扩展方向为横向时,该单元格进行的扩展称为横向扩展。此时该单元格会横向进行复制,复制出的单元格的数据值依次为表达式的结果数据值,表达式返回几个值,单元格就复制几个。
l 复制出来的新单元格的所有属性都引用被复制单元格的属性;
图例
3、纵向扩展
l 当可扩展单元格的扩展方向为纵向时,该单元格进行的扩展称为纵向扩展。此时该单元格会纵向进行复制,复制出的单元格的数据值依次为表达式的结果数据值,表达式返回几个值,单元格就复制几个。
l 复制出来的新单元格的所有属性都引用被复制单元格的属性;
图例
4、不可扩展
l 当单元格里表达式的值是单值时,该单元格默认为不可扩展的单元格。
左主格
单元格进行纵向扩展时,我们又称其为其右边格子的左主格。左主格属性可以默认缺省,也可以人为的改变。
缺省左主格认定规则:
单元格纵向扩展时,左边纵向扩展单元格缺省为它的左主格,右边单元格缺省为它的附属格;如果左边没有纵向扩展格,则左主格缺省为 `0 格。
人为改变主格规则:
可以将某个单元格的左主格设置成某个纵向扩展格。如果要将某单元格的左主格改为00格,则将其左主格属性设置为`0。
为了符合扩展变化的规则,我们可以知道人为设置主格需要满足一些条件:
Ø 左主格必须是纵向扩展格,否则设置无效。
Ø 不允许出现循环设置的情况,即设置A的主格是B,B的主格是C,C的主格又是A,出现循环设置时认为设置有误,报表无法计算。显然,在缺省的情况下是不可能出现循环设置的,而在人为设置时必须避免这种情况的出现。
Ø 横向扩展格不允许有左主格。
人为设置时,可能发生左主格在右边的情况,而且主格也不一定和附属格在同一行上。
上主格
单元格进行横向扩展时,我们又称其为其下边格子的上主格
缺省上主格认定规则:
单元格横向扩展时,上方横向扩展单元格缺省为它的上主格,下方单元格缺省为它的附属格;如果上方没有横向扩展格,则上主格缺省为 `0 格。
人为改变主格规则
可以将某个单元格的上主格设置成某个横向扩展格。如果要将某单元格的上主格改为00格,则将其上主格属性设置为`0。
为了符合扩展变化的规则,我们可以知道人为设置主格需要满足一些条件:
Ø 上主格必须是横向扩展格,否则设置无效。
Ø 不允许出现循环设置的情况,即设置A的主格是B,B的主格是C,C的主格又是A,出现循环设置时认为设置有误,报表无法计算。显然,在缺省的情况下是不可能出现循环设置的,而在人为设置时必须避免这种情况的出现。
Ø 纵向扩展格不允许有上主格。
人为设置时,可能发生上主格在下边的情况,而且主格也不一定和附属格在同一列上。
同值合并
报表有分页时,针对扩展后单元格,对相邻格值相同的单元格设置合并方式,有四个选项:不合并/横向合并/纵向合并/双向合并。同值合并仅对同一扩展格有效。
1、如果设置为“不合并”,那么相邻格值相同的单元格不会合并成一个大的单元格。
● 举例:A1、B1设置为不合并
报表打印或导出分页呈现为:
2、如果设置为“横向合并”,那么左右相邻单元格格值相同的则横向合并成一个大的单元格。合并顺序:按行从上到下
● 举例:A1、A2设置为横向合并
报表打印或导出分页呈现为:
但是,同列所在格子或者包含,或者被包含,不会存在交叉,所以当后合并的格子出现交叉则不会同值合并,比如:
上图中,蓝框里的两个同值单元格不会合并,合并后就与红框中的单元格交叉了。
3、如果设置为“纵向合并”,那么上下相邻单元格格值相同的则纵向合并成一个大的单元格。合并顺序:按列从左到右。
● 举例:A1、A2设置为纵向合并
报表打印或导出分页呈现为:
但是,同行所在格子或者包含,或者被包含,不会存在交叉,所以当后合并的格子出现交叉则不会同值合并,比如:
上图中,蓝框里的两个同值单元格不会合并,合并后就与红框中的单元格交叉了。
4、如果设置为“双向合并”,那么相邻格值相同的单元格则合并成一个大的单元格。“双向合并”用于交叉报表。合并顺序:先纵向(按列从左到右)后横向(按行从上到下)
● 举例:B3设置为双向合并
报表打印或导出分页呈现为:
同样,从上图也可以看出,同列/同行所在格子或者包含,或者被包含,不会存在交叉,所以当后合并的格子出现交叉则不会同值合并。
注意:
同值合并只在分页时生效。如果报表不分页或者报表分页但是导出到不分页excel/pdf文件时,同值合并无效。
合并同值模式
报表有分页时,针对同值合并的单元格设置合并模式,有四个选项:默认/顺序/逆序/简单,常用的合并方式为默认。
1、如果设置为“默认”,合并时只会对同源格的格子执行同值合并。
● 举例:C2同值合并设置为“纵向合并”,合并同值模式设置为“默认”
预览报表呈现为:
2、如果合并同值模式设置为“简单”,那么相邻的无关单元格格值相同的则会合并成。
● 举例:C2同值合并设置为“纵向合并”,合并同值模式设置为“简单”
报表打印或导出分页呈现为:
3、合并同值模式设置为“顺序”。合并顺序:从左到右从上到下。
● 举例:A2、B2同值合并设置为“纵向合并”,A2合并同值模式设置为“顺序”,B2合并同值模式设置为“默认”
报表打印或导出分页呈现为:
4、合并同值模式设置为“逆序”。合并顺序:从下到上从右到左。
● 举例:A2、B2同值合并设置为“纵向合并”,A2合并同值模式设置为“逆序”,B2合并同值模式设置为“默认”
报表打印或导出分页呈现为:
空值合并
报表有分页时,针对扩展后单元格,对空值单元格设置合并方式,有五个选项:不合并/向上合并/向下合并/向左合并/向右合并。
空值合并可以来自不同的扩展格。
向上/下合并,上下单元格必须同宽。
向左/右合并,左右单元格必须同高。
不同的空值单元格可以设置不同的空值合并方式,全表执行完一个方向的合并后再执行另一个方向的合并,合并次序为:向下,向上,向左,向右。
当报表同时设置有同值合并和空值合并时,则先同值合并,后空值合并。
1、如果设置为“不合并”,那么空值单元格不会与相邻单元格合并。
● 举例:C1设置为不合并
预览报表呈现为:
2、如果设置为向上合并/向下合并,那么空值单元格会向上/向下找相邻的同列等宽的格子合并单元格。
● 举例:C1设置为向上合并
空值单元格向上找相邻的同列等宽的格子合并单元格,打印或导出分页结果如下:
3、如果设置为向左合并/向右合并,那么空值单元格会向左/向右找相邻同行等高的格子合并单元格。
● 举例:C1设置为向左合并
空值单元格向左找相邻同行等高的格子合并单元格,打印或导出分页结果如下:
4、不同的空值单元格可以设置不同的合并方式,全表执行完一个方向的合并后再执行另一个方向的合并,合并次序为:向下,向上,向左,向右。
● 举例:A1设置为向右合并,B1设置为向下合并
先执行向下合并,再执行向右合并,结果如下:
● 举例:B1设置为向左合并,A2设置为向上合并
先执行向上合并,再执行向左合并,A2向上合并没有同宽单元格,结果如下:
5、先同值合并,后空值合并
● 举例:A2设置为横向同值合并,A3设置为向上空值合并
先同值合并,A3向上空值合并时没有同宽单元格,结果如下:
注意:
空值合并只在分页时生效。如果报表不分页或者报表分页但是导出到不分页excel/pdf文件时,空值合并无效。
如果超链接字符串不需要动态生成,可以直接在属性【值】中写所要链接的路径。
如果超链接字符串需要根据单元格或者参数值动态生成,则需要在超链接【表达式】中写所要连接的路径。
超链接窗口
超链接跳转方式:
1、属性值为_self时,在当前页面跳转。
2、属性值为_blank时,在新页面打开。
该属性如果不写,缺省为_self。
本小节对分页、分栏、单元格拆分等进行了详细介绍。
分页时伸缩
该属性适用于除报表头、分组表头、数据区和表尾区以外的区域。
行后分页
当前行是否行后分页,可以是属性值也可以是表达式。该属性可设置在一般单元格,也可设置在行首格中。
强制分页,我们可以通过设置按数据行分页的报表分页方式,然后设置每页显示数据行数来实现。但有的时候我们并不固定每页的显示数据行数,只想设定其中某一行或某几行的行后分页,这时利用行后分页就可以达成这个目的。
行后分页可以设在一般单元格,也可以设在行首格。
如果设置在行首格,而且该行是可以扩展的,则该属性会复制到该行扩展出来的所有单元格中。
● 举例:
在A1单元格中编辑=to(1,10),并在该单元格“行后分页”的表达式中编辑
if(A1= =5,true,false):当当前单元格的数据值为5时,行后分页。打印预览发现数据值为6的那一行在下一页了。
列后分页
当前列是否列后分页,可以是属性值也可以是表达式。该属性可设置在一般单元格,也可设置在列首格中。规则与“行后分页”相同。
行后分栏
当前行是否行后分栏。可以是属性值也可以是表达式。该属性可设置在一般单元格,也可设置在行首格中。
有时使用分栏后,我们并不固定每页的显示数据行数,只想设定其中某一行或某几行的行后分栏,这时利用行后分栏就可以达成这个目的。
行后分栏可以设在一般单元格,也可以设在行首格。
如果设置在行首格,而且该行是可以扩展的,则该属性会复制到该行扩展出来的所有单元格中。
● 举例:
在A1单元格中编辑=to(1,10),并在该单元格“行后分栏”的表达式中编辑
if(A1= =5,true,false):当前单元格的数据值为5时,行后分栏。打印预览发现数据值为6的那一行在下一栏了。
单元格拆分
该属性主要为合并格服务的,当分页断开正好位于合并格的中间时,合并格里的值是否拆分后在两页里显示。
● 举例:如下图:
分页断开位于合并格中间。
如果设置该属性,该合并单元格里的文字被拆成两部分,分别在两页里显示。
如果未设置该属性,两页里都是重复显示断开前的文字。
本小节对一般单元格的注释、导出Excel方式、能否修改、单元格样式名、是否可编辑表达式等属性进行了详细介绍。
注释
制作报表的人可在此对该报表单元格做些说明和注释,以方便其他人,或日后自己查看。
导出excel方式
通过设置该属性可控制导出的Excel文件是缺省值、真实值、显示值还是公式。
缺省值:导出结果与预览效果一致。
真实值:导出结果为“值 + 显示格式”。
显示值:导出结果为“显示值 + 显示格式”。
公式:格值表达式为Excel能识别公式时,导出为公式,否则直接导出计算结果。
Excel能识别的公式包括最基本的加减乘除运算(A1+A2),统计函数(sum、avg、max、min),简单的数学和三角函数(abs、exp、lg、ln、sin、cos、tan、asin、acos、atan等)以及一些常用的字符串函数(left、right、len、upper、lower等)。
● 举例:
例1:单元格A1获取GENDER的值,其原值是“F”或“M”。单元格A1设置显示值表达式map(list("F","M"),list("女","男"))。
预览时:显示为“男”或“女”;
导出真实值:显示为“M”或“F”;
导出显示值:显示为“男”或“女”。
例2:单元格A1获取SALARY的值,其中一个原值是“7000”。单元格A1设置显示值表达式“ds1.SALARY+1000”,设置显示格式“¥#.00”。
预览时:显示为“¥8000.00”;
导出真实值:显示为“¥7000.00”;
导出显示值:显示为“¥8000.00”。
例3:单元格A2对A1扩展单元格求SALARY之和,A2单元格设置值表达式=sum(A1{}),设置显示格式“¥#.00”。
预览时:显示为“¥18000.00”;
导出公式:显示为“=SUM(A1:A2)”,值为“¥18000.00”。
用于设置单元格样式,单元格样式名列表从 报表à报表属性 菜单的报表样式所指向的.css文件中读取。【报表属性】中的报表样式从 工具à选项 的文件tab页中报表样式配置的.xml中读取。
报表属性中设置报表样式后,该样式会自动列入到右侧属性中的单元格样式名列表中,如下图所示:
reportStyleConfig.xml:
globalTemp.css: