Reporting services SSRS 2012中的Excel功能

Reporting services SSRS 2012中的Excel功能,reporting-services,ssrs-2008,ssrs-2012,Reporting Services,Ssrs 2008,Ssrs 2012,据我所知,这可能是不可能的,但我认为值得一问,我试图导出SSRS 2012报告,但同时维护Excel功能 我的SSRS报告中有一个文本框,当导出总是出现在D33行/列中时,我的数字是20。我已经在我的报告中的一个单元格中编码了一个在报告中返回的数字,我使用的表达式是==DD3*”&Cint(Fields!LABC_Hours.Value),当导出它时,它会显示为=D33*5,但应该做的是计算=20*5。有什么方法可以做到这一点吗 提前谢谢。简短的回答是否定的 正如您在研究中可能看到的,SSRS

据我所知,这可能是不可能的,但我认为值得一问,我试图导出SSRS 2012报告,但同时维护Excel功能

我的SSRS报告中有一个文本框,当导出总是出现在D33行/列中时,我的数字是20。我已经在我的报告中的一个单元格中编码了一个在报告中返回的数字,我使用的表达式是==DD3*”&Cint(Fields!LABC_Hours.Value),当导出它时,它会显示为=D33*5,但应该做的是计算=20*5。有什么方法可以做到这一点吗

提前谢谢。

简短的回答是否定的

正如您在研究中可能看到的,SSRS 2005对此的支持有限,但后续版本中没有

在早期版本的Reporting Services中,支持有限 用于将RDL中的表达式转换为Microsoft Excel公式。在 在本版本中,当您将报表导出到Excel时,RDL表达式是 未转换为Excel公式

不用说,这是一个流行的请求,请参见此连接项:

在刷新我对所有这些的记忆时,我确实看到了一些提示,建议您使用直接引用
ReportItems
集合的表达式,如:

=ReportItems!val1.Value + ReportItems!val2.Value
这样就行了,但我现在在SSR2008中运行了一个简单的测试,结果没有什么不同


我想大家的共识是,很遗憾,你在这件事上运气不好。

如果有人对这件事感兴趣,我为它开发了解决方案,这可能被认为是丑陋的,但它让我在使用SSR的经历中摆脱了许多痛苦

对于那些想要详细描述想法的人(我认为这是必要的,因为解决方案并不那么明显):

简言之:这是一个定制的呈现扩展,它旨在对SSR隐藏ExcelRE(Formularizer在引擎盖下使用ExcelRE),并在需要时触发公式处理。其思想是用“锚”标记一些报表项,然后在其他报表项中用特殊的简单DSL编写文本公式,在生成excel文档后,这些公式将链接到带有锚定的单元格

重要提示:锚定和公式添加到报表项的操作URL中,因为它似乎是在呈现扩展正常工作且不破坏功能的情况下可以访问的唯一报表项字段(我们可以通过正确的方式发送几乎任何内容)

因此,单词report items“has anchor”或“has formula”表示将report item action设置为URL和表达式
=code.EncodeFormula(“当前项标识符(anchor)”,“当前项公式”)

示例步骤包括(附表):

  • 每个SSRS实例执行一次:根据存储库中的说明编译二进制文件并安装到SSRS
  • 严格:在报告中添加自定义功能:
  • 严格:将自定义属性添加到报告-键为“公式化”,值可以是任意值
  • 表行有报告项(文本框)txtA、txtB和txtC

    4.1 txtA具有锚定
    补偿值

    4.2 txtB具有锚定
    输出值

    4.3 txtC具有公式
    如果({cell'comp_value'row}>0,{cell'output_value'row},“N/A”)

  • excel文件中的结果是公式
    IF(A1>0,B1,“N/A”)
    用于第一行,第二行的行号为2,第三行的行号为3,依此类推

  • 对于
    所有
    范围也是如此。更多的例子在github项目页面上

  • 我希望这有助于其他人,请随意提问并将问题发布到github repo。

    嗨,伊恩,谢谢你的回复,我必须诚实地说,我认为这可能是答案,只是希望他们可能会听取所有人的意见,并在SSRS 2012中添加一些内容,没有这样的运气。不过再次谢谢你。这个答案可以作为一种变通方法,尽管它确实需要终端用户对excel有一点了解。