从我读过的内容来看,这可能是不可能的,但认为值得一问,我正在尝试导出 SSRS 2012 报告但同时维护一个 Excel 函数。
我的 SSRS 报告中有一个文本框,当导出总是出现在 D33 行/列中时,我的数字为 20。我已在报告中的单元格中编码=D33*“报告中返回的数字,我使用的表达式是="=DD3*"&Cint(Fields!LABC_Hours.Value),导出时输出为 =D33*5 但应该做的是计算 =20*5。有没有办法这个?
提前致谢。
从我读过的内容来看,这可能是不可能的,但认为值得一问,我正在尝试导出 SSRS 2012 报告但同时维护一个 Excel 函数。
我的 SSRS 报告中有一个文本框,当导出总是出现在 D33 行/列中时,我的数字为 20。我已在报告中的单元格中编码=D33*“报告中返回的数字,我使用的表达式是="=DD3*"&Cint(Fields!LABC_Hours.Value),导出时输出为 =D33*5 但应该做的是计算 =20*5。有没有办法这个?
提前致谢。
简短的回答是否定的。
正如您在研究中可能看到的那样,SSRS 2005 对此的支持有限,但在后续版本中不支持。
请参阅SSRS 2008 中的重大变化。
在早期版本的 Reporting Services 中,对将 RDL 中的表达式转换为 Microsoft Excel 公式的支持有限。在此版本中,当您将报表导出到 Excel 时,RDL 表达式不会转换为 Excel 公式。
不用说,这是一个流行的请求,请参阅此Connect项:
在刷新我对所有这些的记忆时,我确实看到了一些提示,如果您使用直接引用ReportItems
集合的表达式,例如:
=ReportItems!val1.Value + ReportItems!val2.Value
然后这会起作用,但我现在在 SSRS 2008 中运行了一个简单的测试,它没有任何区别。
我认为普遍的共识是,遗憾的是,您只是在这方面不走运。
如果有人仍然对此感兴趣,我为此开发了解决方案,它可以被认为是丑陋的,但它让我摆脱了我在 SSRS 体验中的许多痛苦。
对于那些想要详细描述想法的人(我认为无论如何都需要,因为解决方案并不那么明显):https ://github.com/GrafGenerator/ssrs-formularize 。
简而言之:这是自定义渲染扩展,旨在从 SSRS 中隐藏 ExcelRE(Formularizer 在后台使用 ExcelRE),并在需要时触发公式处理。这个想法是用“锚点”标记一些报表项,然后在其他报表项中用特殊的简单 DSL 编写文本公式,这些公式将在生成 excel 文档后链接到带有锚点的单元格。
重要提示:添加到报表项的操作 URL 中的锚点和公式,因为它似乎是唯一可以在呈现扩展程序工作时访问的报表项字段而不会破坏功能(我们可以在这里发送几乎任何东西,只要以正确的方式烹饪)。
因此,报告项目“有锚”或“有公式”表示报告项目操作设置为 URL 和表达式=code.EncodeFormula("current item identitier (anchor)", "current item formula")
示例步骤是(附表):
表格行有报告项目(文本框)txtA、txtB 和 txtC。
4.1 txtA 有锚点comp_value
4.2 txtB 有锚点output_value
4.3 txtC 有公式IF({cell 'comp_value' row} > 0, {cell 'output_value' row}, "N/A")
。
excel文件中的结果是第一行的公式IF(A1 > 0, B1, "N/A")
,第二行的行号2,第三行的3,依此类推。
column
和all
范围也是如此。更多示例在项目 github 页面上。我希望这对某人有所帮助,请随时提出问题并将问题发布到 github 存储库。