【问题标题】:Is it possible to export to CSV and have the header contain spaces?是否可以导出为 CSV 并让标题包含空格?
【发布时间】:2013-01-04 12:12:15
【问题描述】:

我需要将 SSRS 2005 报告导出为 CSV,其中列标题包含空格。

目前,CSV 标题列标题源自 textBox 属性名称,并使用下划线而不是空格。还有其他更好的方法吗?

例如,目前我有:

  • SSRS 报告标题:生效日期
  • 文本框名称:Effective_Date
  • CSV 标题:Effective_Date

我想要:

  • SSRS 报告标题:生效日期
  • 文本框名称:Effective_Date
  • CSV 标题:生效日期

【问题讨论】:

标签: csv reporting-services reportingservices-2005


【解决方案1】:

看起来不可能,经过更多挖掘,我发现了以下 Stack Overflow 帖子:

【讨论】:

    【解决方案2】:

    我自己解决了这个问题,方法是自定义内置的 CSV 呈现扩展,使其使用文本框的 ToolTip 属性作为列标题。 ToolTip 属性将允许使用空格和其他标点符号,因此您可以根据需要灵活地命名列。这还具有很好的副作用,即为您提供相关的工具提示,提醒您正在查看的长报告中的哪一列的标题可能不可见!

    注意:在设计器中,您设置的是数据行文本框的工具提示,而不是标题文本框。

    这并不容易实现,因为所有渲染扩展都被标记为密封类。因此,为了实现这一点,我使用了一个反编译器,并将所有与 CSV 渲染相关的代码提取到我自己的项目中。然后将写入标题文本的行改为从文本框的 ToolTip 属性中读取。

    在名为 CsvColumnHeaderHandler 的类中,您正在寻找 OnTextBoxBegin 方法,尤其是以下行:

    this.m_visitor.WriteValue(textBox.DataElementName, this.m_excelMode);
    

    只需将其更改为:

    this.m_visitor.WriteValue(textBox.ToolTip, this.m_excelMode);
    

    然后可以将此自定义呈现扩展插件部署到报表服务器并完美运行。

    您不需要知道如何为此编写渲染扩展,因为正如我所说,我只是复制(反编译)了代码。但是,您需要知道如何部署自定义呈现扩展程序集。更多关于部署的信息可以在这里找到:https://msdn.microsoft.com/en-us/library/ms154516.aspx

    【讨论】:

      【解决方案3】:

      有一个解决方案。您需要在 SSRS 属性中选择按 F4, 选择 Properties,在该选择要重命名的特定文本框中。 例如,让 Textbox12 作为 Effective_Date。解决方案:用 EffectiveDate 重命名文本框。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-09
        • 1970-01-01
        • 2015-02-08
        • 1970-01-01
        • 2015-02-17
        相关资源
        最近更新 更多