通过SSIS动态创建Excel表

时间:2019-05-23 17:00:23

标签: excel excel-formula ssis ssis-2012

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

我尝试使用双精度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
)

预期输出应为输入数据类型格式。

1 个答案:

答案 0 :(得分:1)

OLE DB数据类型和Excel

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

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

Excel数字格式属性

另一方面,excel中有一个Cell属性,称为Number Format,用于更改值在Excel中的显示方式。您可以使用此属性将值显示为“货币”。


解决方案

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

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

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

(2)创建一个Excel模板文件

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