SSIS导入Excel文件xls / xlsx

时间:2011-03-01 07:34:02

标签: excel ssis

我需要将excel文件中的信息导入数据库。 我有一个运行ssis包的网页,它可以获取一个excel文件,并将数据加载到数据库中。
现在的问题在于,要处理xls或xlxs的不同类型的excel文件。

SSIS excel连接管理器,让你指定哪种类型的excel文件,你将连接到 xls xlxs ,你不能使用这两种类型的连接管理器,现在只允许用户始终将xlxs文件更改为xls,然后处理它,有没有办法根据excel文件的类型动态更改连接管理器, 或者我应该在处理不同的类型时调用两个不同的SSIS包。

2 个答案:

答案 0 :(得分:2)

如果您已经从代码运行ssis包,我想这应该相对容易。在过去一周左右,我一直在编写代码编辑包,并且很容易修改变量等。我知道你也可以访问连接并指定一个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.");
                }

            }

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

答案 1 :(得分:2)

在SSIS 2008中,您可以设置与2007 Excel文件(.xlsx)的连接,然后使用Connection Manager上的Expression将ExcelFilePath设置为变量的值。此变量的值可以是类型,97-2003(.xls)或2007(.xlsx),只要工作表名称相同,Excel源将起作用。

Excel Connection Manager Expression

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