2014-09-12 83 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