为什么SSRS导出损坏的XLS文件?

Cha*_*kra 11 sql-server excel reporting-services

我在SQL Server 2012中有一个SSRS报告,该报告导出到Word和PDF,这些报告在各自的读者中打开.但是,当我在MS-Excel中打开XLS文件时,我收到消息,询问是否应该修复损坏的文件.如果我单击是,它将显示一个空文件,其中包含如下消息.我正在使用SQL Server 2012.这仅适用于某一天的数据.

Replaced Part: /xl/worksheets/sheet1.xml part with XML error.  Illegal xml character. Line 14, column 6935.
Run Code Online (Sandbox Code Playgroud)

我想我必须学习这篇文章http://christianspecht.de/2014/01/14/excel-found-unreadable-content-when-exporting-a-reporting-services-report/

Pio*_*ski 11

我有同样的问题,在我的情况下,这是数据精度的问题.显然SSRS无法处理18个小数位,我的程序返回了一些字段的数据.这可能发生在您的情况下.特定日期的数据最终会导致SSRS处理的小数位数过多.

一种选择是更改表中的数据类型以支持较低的精度.其他解决方案是转换填充报表的存储过程中的数字.

SELECT CONVERT(NUMERIC(38,8),MyNumber) AS MyNumber_v2
Run Code Online (Sandbox Code Playgroud)

你可以阅读更多有关此错误在这里.


小智 6

我有百分比类型字段的类似问题.当数据输出中出现值0%时,报表导出到Excel生成的损坏文件.自动修复的Excel文件包含0.00000000000值而不是预期的0.00%.DB中的初始字段数据类型为DECIMAL(24,14).我将CONVERT到DECIMAL(10,7)子句添加到查询中,问题得到修复.