我需要将 SSRS 2005 报告导出为 CSV,其中列标题包含空格。
目前,CSV 标题列标题源自 textBox 属性名称,并使用下划线而不是空格。还有另一种更好的方法吗?
例如,目前我有:
- SSRS 报告标题:生效日期
- 文本框名称:Effective_Date
- CSV 标题:Effective_Date
我想拥有:
- SSRS 报告标题:生效日期
- 文本框名称:Effective_Date
- CSV 标题:生效日期
我需要将 SSRS 2005 报告导出为 CSV,其中列标题包含空格。
目前,CSV 标题列标题源自 textBox 属性名称,并使用下划线而不是空格。还有另一种更好的方法吗?
例如,目前我有:
我想拥有:
看起来不可能,经过更多挖掘,我发现了以下 Stack Overflow 帖子:
我自己解决了这个问题,方法是自定义内置的 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
有一个解决方案。您需要在 SSRS 属性中选择按F4,选择Properties,在该选择要重命名的特定文本框中。例如,让 Textbox12 作为 Effective_Date。解决方案:使用 EffectiveDate 重命名文本框。