SSRS 2016(13.0.4001.0)导出Excel文件名被截断问题求解
解决SSRS 2016导出Excel文件名被截断的问题
这个问题我之前帮好几个同行处理过,本质是SSRS 2016的一个小bug——它会把报表名称里的第一个.错误识别为文件名和扩展名的分隔符,所以"6.0 Reports"就被截成了"6"再加上Excel的扩展名.xlsx,变成了"6.xlsx"。下面是几个实用的解决办法:
方法1:修改报表名称替换点符号
最简单的临时方案就是调整报表显示名称:
- 把报表名从
6.0 Reports改成6_0 Reports或者6-0 Reports,用下划线或短横线替代点 - 保存报表后重新导出,文件名就会完整显示为
6_0 Reports.xlsx或者6-0 Reports.xlsx
方法2:通过报表属性自定义导出文件名
如果不想改报表的显示名称,可以通过报表的自定义属性指定导出文件名:
- 打开报表设计器,右键点击报表空白处,选择报表属性
- 切换到代码标签页,输入以下自定义代码:
Public Function GetExcelFileName() As String Return "6.0 Reports" End Function - 切换到参数标签页,点击添加新建参数(比如命名为
ExcelFileName):- 数据类型选
文本 - 勾选隐藏选项,将参数设为隐藏状态
- 默认值选择指定值,点击添加,在表达式里输入
=Code.GetExcelFileName()
- 数据类型选
- 保存报表后,在报表服务器上导出Excel时,文件名就会自动使用你指定的
6.0 Reports.xlsx
方法3:修改报表服务器配置文件(进阶全局方案)
如果你的环境里有很多类似报表都遇到这个问题,可以修改SSRS配置文件全局解决:
- 找到SSRS安装目录下的
rsreportserver.config文件(默认路径是C:\Program Files\Microsoft SQL Server\MSRS13.MSSQLSERVER\Reporting Services\ReportServer) - 打开文件,找到
<Extension Name="EXCEL" Type="Microsoft.ReportingServices.Rendering.ExcelRenderer.ExcelRenderer,Microsoft.ReportingServices.ExcelRendering">节点 - 在该节点内添加配置项:
注意:这个方法是针对Excel导出的全局配置,若要针对单个报表,方法2的灵活性更高。<Configuration> <DeviceInfo> <FileName>6.0 Reports</FileName> </DeviceInfo> </Configuration>
另外提一句,SSRS 2016的后续累积更新(CU)可能修复了这个问题,如果你还没升级到最新CU,可以尝试更新到CU15及以上版本,说不定官方已经解决了这个文件名截断的bug。
内容的提问来源于stack exchange,提问作者Marat B
相关产品推荐
相关产品推荐

