【发布时间】:2018-03-22 05:09:49
【问题描述】:
这就是我在 SSIS 包中尝试做的事情:
- 将带有标题的空白 Excel 表复制为新文件
- 运行数据流任务在工作表中填充数据。
- 打开 Excel 时,所有数字数据都显示“数字存储为文本”错误。
这会使我的所有图表停止工作。我想知道如何通知 excel 处理特定的列数据数字。
【问题讨论】:
标签: ssis
这就是我在 SSIS 包中尝试做的事情:
这会使我的所有图表停止工作。我想知道如何通知 excel 处理特定的列数据数字。
【问题讨论】:
标签: ssis
我没有测试过的一种可能的解决方案是将数字字段转换为 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 引擎。
【讨论】:
SQL Server,默认数字格式为 27376.00。如果您的语言环境与此格式 Windows 不同,则不起作用。
复制示例:2,7376.00 " 您的 windows 格式需要:"2.7376,00"
就我而言,将区域设置西班牙西班牙更改为西班牙墨西哥。它奏效了。
【讨论】:
我会添加一行模板数据和格式并隐藏该行。这对我有用。导入发生时,它将复制第一个(隐藏的)行格式。
【讨论】:
以下是针对 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()),
【讨论】: