【问题标题】:Dynamically Creating Excel table through SSIS通过 SSIS 动态创建 Excel 表
【发布时间】:2019-05-23 17:00:23
【问题描述】:

在 SSIS 中使用执行 SQL 任务 - 创建的 Excel 文件 - 包含多个列和不同的数据类型。这里的问题是 INT/Money 列在 Excel 中显示为文本列,即使 Excel 表是使用 Int/Money 数据类型创建的

我尝试使用双精度、CY 数据类型,但没有成功。

CREATE TABLE `Employer` (
`MEMBERSHIP NUMBER` VARCHAR(30),
`RETIREE #` VARCHAR(12),
`COPID` CHAR(6),
`PERSON LAST NAME` VARCHAR(150),
`FIRST NAME` VARCHAR(150),
`RETIREE PLAN` CHAR(15),
`PLAN NAME` CHAR(200),
`BILL GROUP` INT,
`BRANCH ID` CHAR(3),
`CONTRACT NUMBER` CHAR(5),
`PBP` CHAR(3),
`BRANCH NAME` VARCHAR(150),
`COVERAGE MONTH` DATE,
`DUE AMOUNT` INT
)

预期的输出应该是输入数据类型格式。

【问题讨论】:

  • 您必须在 Excel 文件中更改 NumberFormat,因为数据类型仅由 SSIS 使用。你有一个很好的答案来描述这个
  • 是的!在excel中更改很容易,用户必须手动完成,但如何通过系统自动化
  • 您必须使用带有 Interop.Excel.dll 的脚本任务

标签: excel excel-formula ssis ssis-2012


【解决方案1】:

OLE DB 数据类型和 Excel

即使您可以使用 OLE DB 命令在 Excel 中创建表,Excel 文件也不是数据库,其中列具有数据类型。 OLE DB 提供程序只读取表格数据,并且需要为每一列指定数据类型。因此,在处理 Excel 时必须指定列数据类型,即使 excel 具有在同一列中存储多种数据类型的能力。

使用 OLE DB 提供程序读取 Excel 的一个缺点是,如果列包含混合数据类型,它只会读取主要数据类型,并将所有剩余数据类型转换为 NULL

Excel 数字格式属性

另一方面,Excel 中有一个名为“数字格式”的单元格属性,用于更改值在 Excel 中的显示方式。您可以使用此属性将值显示为货币。


解决方案

您可以使用两种方法来解决问题:

(1) 使用脚本任务更改列号格式

您可以添加脚本任务并使用 Interop.Excel.dll 程序集更改整个列的数字格式。

(2)创建Excel模板文件

您可以创建一个 Excel 文件并根据需要更改列数字格式并将此文件用作模板。您可以将文件复制到目标目录,然后执行数据导入阶段。

【讨论】:

  • 我正在尝试使用模板仍然将数据加载为文本而不是数字。
  • @KotiRaavi 确保您将整个列号格式更改为货币
  • 我正在导出到 excel .xlsx 之一,我在 excel 格式中完成了相同的完整列,并在加载到 excel 后从数字更新为“常规”。格式谢谢!
  • @KotiRaavi 那么你应该去第一个建议的解决方案,并在包的末尾添加一个脚本任务
猜你喜欢
  • 2014-09-23
  • 1970-01-01
  • 2020-01-03
  • 2014-09-22
  • 1970-01-01
  • 1970-01-01
  • 2013-09-09
  • 1970-01-01
  • 2018-12-30
相关资源
最近更新 更多