这就是我在 SSIS 包中尝试做的事情:
这会使我的所有图表停止工作。我想知道如何通知excel将特定列数据处理为数字。
我尚未测试的一种可能的解决方案是将数字字段转换为 DT_R8 或 DT_CY。 Excel 目标似乎仅支持这些数字数据类型,而 SSIS 目标可能会隐式地将所有其他数据类型转换为文本。
另一种可能的解决方案是将数值添加到数字列,以便它知道将模板表中的目标格式设置为数字。您可以隐藏这些值,也可以使用要发布到文件的新数据覆盖它们。
就个人而言,如果我知道需要导出到 Excel,那么我会使用 SSRS 报告,并通过使用 sp_start_job 进行计划作业来运行报告订阅。 SSIS 中的 Excel 导入和导出功能非常糟糕,因为它们依赖于 Jet 4.0 引擎。
SQL Server,默认数字格式为 27376.00。如果您的区域设置与此格式 Windows 不同,则不起作用。
复制示例:2,7376.00 " 您的 Windows 格式需要:“2.7376,00”
就我而言,将区域设置西班牙西班牙更改为西班牙墨西哥。成功了。
我将添加一行包含模板数据和格式的行并隐藏该行。这对我有用。发生导入时,它将复制第一(隐藏)行格式。
只需在第一行(如果设置第一行有列名称,则为第二行)添加一条临时记录,其中包含具有所需格式的临时值。 Excel 将第一个数据行或第一个数据设置为字段类型。
以下是针对 3 种不同故障的 3 种不同解决方案:
值1
1234
空白单元格
1234
解决方案2
=IIF(IsNumeric(Fields!TEST.Value.ToString()), CDBL(IIF(IsNumeric(Fields!TEST.Value.ToString()), Fields!TEST.Value.ToString(), "0")), " ”)
值2
1234
空
345
空
解决方案2
=IIF(IsNumeric(Fields!TEST.Value.ToString()), CDBL(IIF(IsNumeric(Fields!TEST.Value.ToString()), Fields!TEST.Value.ToString(), "0")), "空”)
值3
1234
空
345
不适用
550
待定
440
599
不适用
解决方案3
=IIF(IsNumeric(Fields!TEST.Value.ToString()), CDBL(IIF(IsNumeric(Fields!TEST.Value.ToString()), Fields!TEST.Value.ToString(), "0")), 字段!TEST.Value.ToString()),