2014-09-12 40 views
8

我在SQL Server 2012中有一个SSRS报告,它导出到在相应阅读器中打开的Word和PDF。但是,当我在MS-Excel中打开XLS文件时,我收到消息询问它是否应该修复损坏的文件。如果我点击是,它会显示一个空白文件,如下所示。我正在使用SQL Server 2012.这仅适用于某一天的数据。为什么SSRS导出损坏的XLS文件?

Replaced Part: /xl/worksheets/sheet1.xml part with XML error. Illegal xml character. Line 14, column 6935. 

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

+0

您是否能够在SSRS或导出的PDF中查看此特定日期的报告? – Dbloch 2014-09-12 18:04:34

+0

正确,你的字符超出了预期的范围,你的选择是擦除这些值或者查看修补你的服务器。太懒惰检查,但累积更新(CU)或服务包(SP)之一解决这个问题。 – billinkc 2014-09-12 22:28:46

+0

@Dbloch是能够查看PDF,WOrd,SSRS。我在上面的URL中运行了代码,现在它似乎可以工作。 – Chakra 2014-09-13 07:09:33

回答

9

我有同样的问题,在我的情况下,它是与数据精度问题。显然,SSRS不能处理18位小数,我的程序为某些字段返回了这些数据。这可能发生在你的情况。特定日期的数据最终会以SSRS处理的小数位数过多而告终。

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

SELECT CONVERT(NUMERIC(38,8),MyNumber) AS MyNumber_v2 

您可以阅读更多关于此bug的信息here

5

我有百分比类型字段类似的问题。当数据输出中出现值0%时,报告将导出到Excel中生成碎片文件。如预期的那样,自动修复的Excel文件包含0.00000000000个值而不是0.00%。 DB中的初始字段数据类型是DECIMAL(24,14)。我将CONVERT添加到了DECIMAL(10,7)子句中,并将问题修复。

1

我以excel格式导出时遇到同样的情况。在我的情况下,通过仔细观察报表输出,我发现输出中有非ASCII字符。我删除了非ASCII字符,之后,Excel导出工作正常。我通过使用以下函数从包含列中删除非ASCII字符。

CREATE FUNCTION fnc_RemoveNonASCII 
(
@nstring nvarchar(255) 
) 
RETURNS varchar(255) 
AS 
BEGIN 
DECLARE @Result varchar(255) 
SET @Result = '' 

DECLARE @nchar nvarchar(1) 
DECLARE @position int 

SET @position = 1 
WHILE @position <= LEN(@nstring) 
BEGIN 
    SET @nchar = SUBSTRING(@nstring, @position, 1) 
    --Unicode & ASCII are the same from 1 to 255. 
    --Only Unicode goes beyond 255 
    --0 to 31 are non-printable characters 
    IF UNICODE(@nchar) between 32 and 255 
     SET @Result = @Result + @nchar 
    SET @position = @position + 1 
END 
RETURN @Result 
END 
GO 
1

我从使用Oracle数据库的SSRS 2012导出为ex​​cel(xlsx格式)时遇到类似问题。但是错误信息是“我们发现XYZ.xlsx中的某些内容存在问题,您是否希望我们尽可能多地恢复?如果您信任此工作簿的源,请单击”是“。这个问题是因为其中一个领域的不可打印字符。通过将SQL查询更改为使用正则表达式“select column1,REGEXP_REPLACE(column2,'[^ [:print:]]','')作为来自表”的第2列来解决问题。基本上,正则表达式从column2中删除任何不可打印的字符。

0

检出报表设计(在报表生成器中)的单元格(或列标题)字体。 也许其中一个在您的机器上不存在!

+0

在这里看到:HTTPS: //social.msdn.microsoft.com/Forums/sqlserver/en-US/9a9ae671-d5cb-46a5-878e-09605c3a33a7/export-to-excel-error-in-sql-server-2014-report-builderviewer?forum= sqlreportingservices – 2017-05-17 11:30:08