【问题标题】: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 重命名文本框。