通过XLSM文件循环SSIS 2012
我有一堆启用了macros的Excel文件。 我想通过一个SQL查询来循环每一个 – select * from [Sheet1$A10:AZ100]
。 当我select了一个文件时,我的Excel连接pipe理器工作,但是当我添加一个For Each Loop Task并将我的variables分配给它时,会出现一个大问题。 我的步骤是:
-
创build新连接:Excel连接pipe理器我select文件夹中的第一个XLSM文件并点击确定。
-
拖放每个循环容器并双击。 在集合中:我selectFor Each File Enumerator并在文件夹中指定文件夹path。 在文件中:* .xlsm最后一个选项是:完全合格
在variables映射中:我创build了一个名为“FileFound”的新variables -
在每个容器中拖放数据stream任务并双击。
-
拖动源助手:select上面创build的Excel连接pipe理器
-
双击Excel来源和数据访问模式:我selectSQL命令。 我的查询是
select * from [Sheet1$A10:AZ100]
。 这个查询对于所有的XLSM文件是相同的。 -
点击列和我的数据显示一切OK
现在这是问题开始的地方 –
右键单击Excel连接pipe理器,然后点击属性。
-
我先复制我的连接string。 我的连接string是:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\Excel data\ABCDE.xlsm;Extended Properties="Excel 12.0 MACRO;HDR=YES";
-
我单击expression式并select属性中的连接string。 接下来我编辑我的expression式为:
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @[User::FileFound] + " ;Extended Properties=\"Excel 12.0 MACRO;HDR=YES\";"
这是正确的评估。 -
然后,我将Excel连接pipe理器的延迟validation设置为TRUE
- 我将“每个容器的延迟validation”设置为“真”
我得到的错误是:
我怎样才能解决这个错误? 我已经尝试了很多东西,读了所有的东西,但是没有能力过去。
我修好了它!!
我不得不右键单击“Excel连接pipe理器”的属性,而不是select扩展属性中的ConnectionString
string,我不得不selectExcel File Path
。