从报表管理器导出时Excel不会打开

时间:2016-10-03 09:24:52

标签: reporting-services

从报表管理器导出时,

Excel文件未打开。我知道这是什么问题。但要解决这个问题我需要帮助。请任何人都可以建议我如何解决错误。以下是详细信息。当试图打开excel消息显示是

Excel在'CustomerDetails.xlsx'中找到了不可读的内容。你想恢复这个工作簿的内容吗?如果您信任此工作簿的来源,请单击“是”。

我已将excel重命名为zip并阅读notepad ++中的内容

在导致打开excel的符号之前,在下面播放的行中有百分比符号。

确认基于地址%

任何建议请问如何解决这个问题?

感谢。

1 个答案:

答案 0 :(得分:0)

我将假设从数据库返回的数据是基于文本的(text,varchar或nvarchar),并且其中包含一些不常见的字符,这可能导致此问题。

在这种情况下,您可以使用UDF(如下所示)在报表运行时清理文本。 (调整它来做你需要的任何事情;如果你想在输出中保持回车和换行,则删除char 10和13的替换)

CREATE FUNCTION [dbo].[udf_CleanText]
(
    @dx text
)

RETURNS varchar(max)

AS

BEGIN
    DECLARE @cdx varchar(max) = @dx

    SELECT @cdx = REPLACE(@cdx, char(20), '')
    SELECT @cdx = REPLACE(@cdx, char(21), '')
    SELECT @cdx = REPLACE(@cdx, char(13), '')
    SELECT @cdx = REPLACE(@cdx, char(10), '')
    SELECT @cdx = REPLACE(@cdx, char(18), '')
    SELECT @cdx = REPLACE(@cdx, char(17), '')
    SELECT @cdx = REPLACE(@cdx, char(22), '')

    RETURN @cdx
END

要使用此功能,请将其添加到报告的查询中。

SELECT dbo.udf_CleanText(TextField) AS TextFieldClean
FROM tblTable

如果由于报表中的某些计算而发生这种情况,例如返回NaNInfinity的表达式,那么您需要更改表达式来处理它。

在混音中添加IIF以检查意外值可能会有所帮助。以下是一些例子:

SSRS Formula or expression to change NaN to 0

NaN and Infinity values in SSRS