excel - 通过SSIS动态创建Excel表

标签 excel excel-formula ssis ssis-2012

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

我尝试过使用 double 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
)

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

最佳答案

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 文件并根据需要更改列数字格式,并使用该文件作为模板。您可以将文件复制到目标目录,然后执行数据导入阶段。

关于excel - 通过SSIS动态创建Excel表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56279923/

相关文章:

arrays - 如何创建字符串数组并将其传递给 Excel VBA 中的子项?

sql-server - SSIS - 更改列名的 Excel 到 SQL Server

excel - 彭博数据导入 Excel

excel - 哪个工作表包含带有 3D 公式的值

sql-server - SSIS 到 Excel - Excel 公式没有自动运行?

sql - 如何在SSIS条件分割中比较两个GUID?

ssis - 是否可以在执行 SQL 任务上指定超时值?

ssis - 使用 SSIS 2008 使用单一转换连接多个表

vba - 计算列中值的数量(值是文本格式的数字)

excel - 为什么 Word 有 Application.Activate 方法,而 Excel 没有?