【问题标题】:ReportViewer.ServerReport.Render("Excel") ignoring conditional formatting in report?ReportViewer.ServerReport.Render("Excel") 忽略报告中的条件格式?
【发布时间】:2015-12-07 15:51:21
【问题描述】:

我有一些报告,我想仅使用一个链接将其呈现到 Excel 中。为了做到这一点,我有一个页面(实际上是 Web 应用程序),它使用 ReportViewer 来选择参数,然后截取渲染阶段。然后,我使用byte[] result = ReportViewer.ServerReport.Render("Excel"); 将渲染作为 excel 渲染执行并将其发送给用户。

我得到了它的工作,但有一个怪癖:生成的 excel 文件的标题仍然存在。报告将这些定义为在呈现到 excel 时不呈现,因为选项卡名称已经包含名称并且它们会干扰一键旋转。

我查看了reportviewer 表单的界面,但找不到任何会触发条件格式的内容。谁能帮我解决这个问题?

【问题讨论】:

    标签: excel ssrs-2012


    【解决方案1】:

    如果要导出为 .xlsx 格式,请确保条件格式中的表达式引用“EXCELOPENXML”而不是“EXCEL”。或者您可能需要将此值传递给 Render 函数。或两者。如果您要导出到早于 2007 年的 Excel 版本,则不适用。

    这两种格式类型的编码方式不同。我的理解是,呈现为“EXCEL”类型的 SSRS 报告以二进制编码,而“EXCELOPENXML”类型的报告自然地以 XML 编码。

    这纯粹是推测,但可见性表达式可能需要基于您使用的 Excel 版本的特定类型的编码。因此,即使其中任何一个都可能呈现给应用程序,也只有一个会按照您的预期计算表达式。

    【讨论】:

    • 您好,感谢您的意见。我的问题不是关于文件格式,而是关于未执行的报告中存在的可见性表达式。 AFAIK 文件格式(xls/xlsx)不应该有所作为。你说的是吗?
    • rdl 中使用什么表达式来设置可见性属性?听起来您会使用 =Globals!RenderFormat.Name="EXCEL" 之类的东西。我的观点是,如果文件格式为 .xlsx,这将评估为 FALSE,如果文件格式为 .xls,则评估为 TRUE。您可以使用 =Globals!RenderFormat LIKE "EXCEL*" 在两个版本中评估为 TRUE,或者使用 =Globals!RenderFormat ="EXCELOPENXML" 使其仅对 .xlsx 隐藏。我对 Render 函数不太熟悉,但这个命名约定也可能适用于那里,这是我试图提出的最后一点。
    • 定义可见性的表达式是 =IIF(Globals!RenderFormat.Name like "EXCEL*",true,false) 在我看来,渲染器忽略格式确实存在问题。跨度>
    • 只是为了好玩,您可以将渲染函数中的参数从“EXCEL”更改为“EXCELOPENXML”吗?此外,它不应该影响结果,但 IIF(...,true,false) 似乎是多余的,不是吗?
    • 它实际上以某种方式解决了这个问题。我不明白。表达式也应与 excel 匹配。如果您可以解释为什么这在您的答案中有效/可能有效,我会将其标记为我的选择。谢谢你的帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 2018-06-19
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多