【问题标题】:How to avoid 'number stored as text' error when exporting data from SQL server to excel (SSIS)将数据从 SQL Server 导出到 Excel (SSIS) 时如何避免“数字存储为文本”错误
【发布时间】:2018-03-22 05:09:49
【问题描述】:

这就是我在 SSIS 包中尝试做的事情:

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

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

【问题讨论】:

    标签: ssis


    【解决方案1】:

    我没有测试过的一种可能的解决方案是将数字字段转换为 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_job 来运行报告订阅作为计划作业。 SSIS 中的 Excel 导入和导出功能非常糟糕,因为它们依赖于 Jet 4.0 引擎。

    【讨论】:

    • 我发现您提供的第一个解决方案不起作用。我提供的第二种解决方案确实取得了巨大的成功。我在标题下方放了一行,并在数字列中包含 0.00。覆盖不起作用,但我将该行作为命名范围的一部分并隐藏了该行,只显示标题行。数字输入正确。非常感谢!
    • 第二种解决方案有效;但是,它跳过了一行,这很烦人,但不是世界末日。
    【解决方案2】:

    SQL Server,默认数字格式为 27376.00。如果您的语言环境与此格式 Windows 不同,则不起作用。

    复制示例:2,7376.00 " 您的 windows 格式需要:"2.7376,00"

    就我而言,将区域设置西班牙西班牙更改为西班牙墨西哥。它奏效了。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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


        价值 2

        1234

        345

        解决方案 2
        =IIF(IsNumeric(字段!TEST.Value.ToString()),CDBL(IIF(IsNumeric(字段!TEST.Value.ToString()),字段!TEST.Value.ToString(),“0”)),“空")


        价值 3

        1234

        345
        不适用
        550
        待定
        440
        599
        不适用
        解决方案 3
        =IIF(IsNumeric(字段!TEST.Value.ToString()),CDBL(IIF(IsNumeric(字段!TEST.Value.ToString()),字段!TEST.Value.ToString(),“0”)),字段!TEST.Value.ToString()),

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-30
        相关资源
        最近更新 更多