如何循环访问excel文件并使用ssis 2008获取sheetname

我想从一个非静态的sheetname(sheetname包含yyyymmdd,这将改变每个文件)的Excel文件加载到SQL数据库表中的数据。 我遵循如何通过Excel文件循环提供的解决scheme, 并使用SSIS包加载到数据库中? 但只能设法获得第一个循环工作。 当我试图将数据stream任务下的用户variables“Sheetname”分配给Excel Source时,出现错误 –

CSSN_Invoice错误[连接pipe理器“testingMKBS连接”]:SSIS错误代码DTS_E_OLEDBERROR。 发生OLE DB错误。 错误代码:0x80004005。 OLE DBlogging可用。 来源:“Microsoft Access数据库引擎”Hresult:0x80004005描述:“无效的参数。”

数据stream任务错误[MKBS Sheetname [1]]:SSIS错误代码DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。 AcquireConnection方法调用连接pipe理器“testingMKBS连接”失败,错误代码0xC0202009。 在此之前可能会发布错误消息,更多关于为什么AcquireConnection方法调用失败的信息

数据stream任务工作正常时,表名被选为“表或视图”,而不是“表名或视图名称variables”

请帮忙 !

创build数据stream任务以将表名读入ADO对象。

数据流

第一项是作为源的脚本组件。 我有一个连接string到Excel电子表格的variables

connstr

创build了SheetName的输出

输出设置

这是读取标签名称的代码: C#

你基本上是用oleDB打开电子表格。 将表名放入数据表中

循环访问数据表并写出要输出的行。

确保closures连接! 如果不这样做,以后可能会导致错误。

下一步是条件拆分,因为结果有重复的选项卡名称,它们都以'_'结尾。

条件分割

下一步是派生一个列来清除表格名称的“'”

DerivedCol

创build一个Objecttypes的variables:我命名为我的ADO_Sheets

插入logging集目标对象:1.将variables设置为您刚创build的variables2.映射干净页的列

现在回到控制stream程并设置一个foreach循环控制: 在这里输入图像说明

configurationforeach …枚举器:Foreach ADO枚举器源:ADO_Sheetsvariables映射:设置为一个名为SheetName的variables

我在循环中有一个函数任务,但它更容易理解,它可能已经在variables: SQL

现在,这个variables是您select从页面中提取数据的select。

最后是您要运行的数据stream任务。

洛特的工作,但我经常使用这个,我想我会分享!