Posts Tagged ‘真实值’

巧用空值判断函数nvl()

08.06.2009 by fengzhou - 0 Comment - 0
Posted in java报表相关

在设计企业报表时,报表单元格的表达式中经常需要用到空值判断,例如在单元格的显示值属性中,判断当单元格的值为空时,显示为0,否则显示单元格的真实值,等等。一般这种情况下,用户习惯写的表达式是: if(value()==null, 0, value())。

如果我们把value()换成更加复杂的表达式,例如if(ds1.select1(…)==null, 0, ds1.select1(…)),大家可以看出,这种算法明显很慢,需要把ds1.select1(…)这样的复杂表达式运算两次,而如果采用nvl()则可以避免这个问题。

单元格函数:nvl()

函数说明:
根据第一个表达式的值是否为空,若为空则返回指定值

语法:
nvl( valueExp1, valueExp2 )

参数说明:
valueExp1–需要计算的表达式,其结果不为空时返回其值
valueExp2–需要计算的表达式,当valueExp1结果为空时返回此值

返回值:
valueExp1或valueExp2的结果值

示例:
例1:nvl(A1,””) 表示当A1为空时,返回空串,否则返回A1

例2:nvl(value(),0) 表示当当前格为空时返回0,否则返回当前格的值

应用举例:

正确写法,速度快 错误写法,速度慢
nvl(ds1.select1(…), 0) if(ds1.select1(…)==null, 0, ds1.select1(…))
nvl(a1[……]{……}, “–”) if(a1[……]{……}==null, “–”, a1[……]{……})

引自:润乾报表知识库
相关文章:一种实现类似excel把负数显示成红色且去掉负号的方法 ; 导入带公式excel的问题web报表的扩展功能;润乾报表出了新版统计图解决行式填报导入excel发生错位的问题

Jasperreports+ireport不支持显示值,怎么办?

07.10.2009 by fengzhou - 0 Comment - 0
Posted in java报表相关

数据库结构中常见代码表(或者叫做字典表)的设计方式。比如,下图中的学历字段,在员工表中保存的是代码”1、2、3″等,在学历代码表存放的是代码对应的名称”博士、硕士、学士”等。这就要求报表工具提供一个”代码”到”名称”的转换机制:真实值是代码,显示值是名称。

但是Jasperreports+ireport报表却不支持这种方式,只能在sql中写很复杂的语句。

那么,有没有其他免费的报表工具可以实现这个功能呢?这里,给您推荐一款免费的报表工具--快逸报表,可以轻松的使用类似excel的设计界面,实现复杂的中国式报表!!

快逸报表可以很自由的定义显示值表达式,而显示值仅仅是用来展现,在单元格互相引用的时候,可以引用真实值,也可以引用显示值。

上图中的”性别”字段显示值表达式为:map(list(”1″,”2″),list(” “,” “))

上图中的”学历 “字段表达式为:ds2.select1(name,id==value())

和Jasperreports+ireport这样的开源控件相比,用快逸报表有什么好处呢?

1、同样是免费报表工具,快逸报表是国内厂商的商用产品,适合中国式复杂报表需求。

2、快逸报表采用类似excel的设计风格,从扩展、对齐等角度来说更加易用,为最终用户设计报表创造了条件。

3、快逸报表提供零代码的数据填报表设计功能,在数据展现的同时,很方便的解决数据填报入库的需求。

4、快逸报表具备专业的技术团队,提供免费的中文文档和技术论坛服务。

引自:报表工具知识库
原文链接:Jasperreports+ireport不支持显示值,怎么办?
相关文章:报表工具:开源 or 收费? ; 代码与显示值的匹配 ; 解决快逸报表设计器控制台出现的一个异常;能够实现图形化界面设计的免费Web控件
其他相关内容:报表系统与java;VB报表打印工具软件; 研究BI报表设计;web报表博客

显示值or真实值?——谈谈导出excel的数据显示

06.14.2009 by fengzhou - 0 Comment - 0
Posted in java报表相关

设计报表的时候往往都有显示值和真实值之分,通常真实值对应的是数据库中的代码,显示值对应的是实际业务术语。然而,excel文件中是没有显示值 和真实值之分的。那么,当把展现出来的报表(以显示值的方式)导出为excel文件的时候,是导出了显示值还是真实值呢?通过测试得知,只有当单元格的真 实值是字符串型时导出的是显示值,其余的情况导出的都是真实值(这大概和excel偏重于计算有关)。

当需要按照显示值导出数据时,就需要在报表中把真实值先转换为字符串型(需要用到单元格的值进行计算时再转回原来的类型),然后再设置其显示值,这样就可以保证导出excel中的数据和web端展现的一致了。

下面举个简单的例子说明:

对于非字符串型的数据,设置了其显示值:

1.png

在web上正常按照显示值的设置展现,导出到excel的却是报表中的真实值:

2.png

将数据的类型转换为字符串型,导出到excel的就是显示值了:

3.png