SSIS导入Excel文件xls / xlsx

我有一个从Excel文件导入到数据库的信息的要求。 我有一个网页,运行一个ssis包,拿起一个excel文件,并加载数据到数据库。
现在的问题在于,不同types的excel文件是xls或xlxs的进程。

SSIS excel连接pipe理器,让你指定哪种types的excel文件,你将连接到xlsxlxs ,你不能使用这两种types的连接pipe理器,现在只允许用户总是把xlxs文件改为xls,然后处理它,有没有一种方法来dynamic更改连接pipe理器,基于types的Excel文件,或者我应该只有两个不同的SSIS包称为,当一个不同的types被处理。

在SSIS 2008中,可以将连接设置为2007 Excel文件(.xlsx),然后使用连接pipe理器上的expression式将ExcelFilePath设置为variables的值。 只要工作表名称相同,此variables的值可以是97-2003(.xls)或2007(.xlsx)types的任何一种,并且Excel Source将起作用。

Excel连接管理器表达式

我不确定这是否是SSIS 2005中的相同行为。

如果你已经从代码运行ssis包,我会想象这应该是相对容易的。 我一直在从上周左右的代码编辑软件包摆弄,这是很容易修改variables等。我知道你也可以访问连接,并指定一个dtsConfig文件

using (var p = app.LoadFromSqlServer(config.PackageName, config.SqlServerName, config.UserName, config.Password, null)) { // changing variables in code Variables vars = p.Variables; vars["FromDate"].Value= criteria.From; vars["ToDate"].Value = criteria.To; // using a configfile in code p.ImportConfigurationFile(config.ConfigurationFile); DTSExecResult result = p.Execute(); if (result != DTSExecResult.Success) { throw new ApplicationException("SSIS Package did not compelte successfully."); } } 

你可能有2个不同的configuration文件,一个用于xlsx,另一个用于xls连接,并根据上传的excel文件扩展名使用相应的configuration文件。