快逸报表如何正确将显示值导出至Excel
能否方便准确的把web报表导出成为Excel、Word、PDF等文件形式是衡量报表功能/ 性能是否强大与完善的一个重要条件。在快逸报表中就为web报表浏览者提供了非常方便的不失真导出Excel、Word、PDF等功能,不过有些用户使用快逸报表,当单元格显示格式与显示值同时设置时,本想导出显示值,但是当导出到Excel时发现,实际导出的是真实值,这就与本身实现的结果不符,遇到此问题后用户都不知如何处理。
下面的内容将说明解决此问题的方式。
解决思路:
简单来说就是对需要导出Excel的快逸报表,当某些单元格需同时设置显示格式与显示值时,要换用另外的方式设置数据的显示格式。处理方式应该是在显示值表达式内对数据进行显示格式设置。
以下内容将使用例子重现问题并解决问题,对照报表显示值导出Excel结果:
第一步:重现问题
1, 新建一空白报表,并配置一内建数据集
内建数据集包含三个字段,如下图所示:
本例中,为内建数据集增加10条数据如下:
2, 报表具体实现
(1)在A1、B1、C1、D1内依次输入“学号”、“姓名”、“成绩(真实值列)”、“成绩(显示值列)”,其中C列与D列作为导出结果的对照列。
(2)在A2单元格设置表达式为:=ds1.select(学号),查询出所有的学号信息。
在B2单元格设置表达式为:=ds1.姓名,查询学生姓名。
在C2与D2单元格设置相同表达式为:=ds1.成绩,查询数据库中的成绩值。
到此报表复杂报表设计" target="_blank" class="quieeLink1">设计效果如下:
(3)为D2单元格增加数据显示格式
设置D2单元格显示格式为“#,###.00”,如下图:
(4)为D2单元格设置显示值表达式
显示值表达式内设置为“if(value()>=100,100,value())”,其意思即当满足该单元格内的值大于等于100时,显示为100.00,否则显示当前单元格内的真实值。比如当前单元格内值为103.222,那么此时显示值应为100.00,而值为58.333时,显示为58.33。设置步骤如下图所示:
(5)报表发布后,Web上展现数据如下:
(6)显示格式与显示值同时设置情况下,导出Excel结果如下:
经过以上几个步骤已经把问题重现。
第二步:解决问题
1, 删除例子中D2单元格的显示格式
删掉D2单元格的显示格式“#,###.00”
2, 修改D2单元格的显示值表达式
修改表达式为:if(value()>=100,str(100,”#,###.00″),str(value(),”#,###.00″))
修改方式如下所示:
3, 修改报表后,在Web端发布显示结果为:
4, 导出Excel结果为:
至此可以看出,在显示值表达式内对数据进行显示格式设置,能够正确导出至Excel报表的显示值。
总结:本文关键点是,当有将报表导出Excel需求,并且需要导出显示值而非真实值时,要避免在报表内同时设置显示格式与显示值两个属性,而要通过将数据显示格式放在显示值表达式内来处理。