代码之家  ›  专栏  ›  技术社区  ›  Krishna Kumar

如何避免将数据从SQL server导出到excel(SSIS)时出现“数字存储为文本”错误

  •  7
  • Krishna Kumar  · 技术社区  · 14 年前

    这就是我试图在SSIS包中执行的操作:

    1. 将带有标题的空白excel工作表复制为新文件
    2. 运行数据流任务在工作表中填充数据。
    3. 打开excel时,所有数字数据都显示为“数字存储为文本”错误。

    这会阻止我所有的图表工作。我想知道如何通知excel处理特定的列数据数字。

    4 回复  |  直到 14 年前
        1
  •  6
  •   Registered User    14 年前

    我没有测试过的一个可能的解决方案是将数值字段转换为DT_R8或DT_CY Excel destination only appears to support these numeric data types SSIS目标可能隐式地将所有其他数据类型转换为文本。

    另一个可能的解决方案是 add numeric values to the numeric columns 以便它知道如何在模板工作表中将目标格式化为数字。可以隐藏这些值,也可以使用要发布到文件中的新数据覆盖它们。

    就我个人而言,如果我知道需要导出到Excel,那么我将使用SSRS报表,并通过使用sp_start_作业来运行计划作业的报表订阅。SSIS中导入和导出到Excel的功能非常糟糕,因为它们依赖于Jet 4.0引擎。

        2
  •  0
  •   Wenceslao Garcia    10 年前

    SQL Server,默认数字格式为27376.00。如果您的区域设置与此格式的窗口不同,则不起作用。

    副本示例:27376.00“ 你的windows格式neeed:“2.7376,00”

    在我的情况下,把西班牙西班牙的区域设置改成西班牙墨西哥。成功了。

        3
  •  0
  •   Rafael Dontal Gonçalez    9 年前

    我将添加一行模板数据和格式,并隐藏该行。这对我很有用。当导入发生时,它将复制第一个(隐藏的)行格式。

        4
  •  -1
  •   sanjeev Kr sharma    7 年前

    以下是针对3种不同故障的3种不同解决方案:
    值1
    1234年
    空白单元格
    1234年
    解决方案2
    =IIF(是数字(字段!TEST.Value.ToString(),CDBL(IIF(IsNumeric(Fields!)!TEST.Value.ToString(),字段!TEST.Value.ToString(),“0”),“”)


    Value 2

    1234年
    无效的
    345个
    无效的
    解决方案2
    =IIF(是数字(字段!TEST.Value.ToString(),CDBL(IIF(IsNumeric(Fields!)!TEST.Value.ToString(),字段!TEST.Value.ToString(),“0”),“空”)


    Value 3

    1234年
    无效的
    345个
    不适用
    550个
    待定
    440个
    599个
    不适用
    解决方案3
    =IIF(是数字(字段!TEST.Value.ToString(),CDBL(IIF(IsNumeric(Fields!)!TEST.Value.ToString(),字段!TEST.Value.ToString(),“0”),字段!TEST.Value.ToString()),