知识库

推荐内容

快逸做的更好

产品优势

您的位置: 首页 > 知识库 > 设计基础 > 快逸报表如何正确将显示值导出至Excel

快逸报表如何正确将显示值导出至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需求,并且需要导出显示值而非真实值时,要避免在报表内同时设置显示格式与显示值两个属性,而要通过将数据显示格式放在显示值表达式内来处理。

发布日期:2012/04/11
本文分类: 设计基础