如何循环遍历 Excel 文件和表

更新日期: 2006 年 7 月 17 日

本主题中的过程介绍如何使用具有相应枚举器的 Foreach 循环容器循环遍历文件夹中的 Excel 工作簿或 Excel 工作簿中的表。

使用 Foreach 文件枚举器循环遍历 Excel 文件

  1. 创建一个将在每次循环迭代中接收当前 Excel 路径和文件名的字符串变量。(本过程后面显示的示例表达式将使用变量名 ExcelFile。)

    ms345182.note(zh-cn,SQL.90).gif注意:
    若要避免验证问题,请分配有效的 Excel 路径和文件名作为该变量的初始值。
  2. 创建另一个字符串变量,用于存放 Excel 连接字符串的扩展属性参数的值。此参数包含一系列值,这些值指定 Excel 版本并确定第一行是否包含列名称,以及是否使用导入模式。(此过程随后显示的示例表达式将使用变量名 ExtProperties,其初始值为 Excel 8.0;HDR=Yes``"。)

  3. 将 Foreach 循环容器添加到**“控制流”**选项卡。有关如何配置 Foreach 循环容器的信息,请参阅如何配置 Foreach 循环容器

  4. 在**“Foreach 循环编辑器”“集合”**页上,选择“Foreach 文件”枚举器,并指定 Excel 工作簿所在的文件夹,然后指定文件筛选器(通常是 *.xls)。

  5. 在**“变量映射”**页中,将索引 0 映射到用户定义字符串变量,该变量将在每个循环迭代中接收当前 Excel 路径和文件名。(本过程后面显示的示例表达式将使用变量名 ExcelFile。)

  6. 关闭**“Foreach 循环编辑器”**。

  7. 按照如何将连接管理器添加到包中中的说明,将 Excel 连接管理器添加到包。为连接选择一个现有 Excel 工作簿文件以避免出现验证错误。

    ms345182.note(zh-cn,SQL.90).gif重要提示:
    若要避免在对使用此 Excel 连接管理器的任务和数据流组件进行配置时出现验证错误,请在“Excel 连接管理器编辑器”中选择一个现有的 Excel 工作簿。在您按照下列步骤为 ConnectionString 属性配置表达式以后,连接管理器在运行时将不使用此工作簿。在创建并配置包后,可在“属性”窗口中清除 ConnectionString 属性的值。但是,清除此值之后,要等到 Foreach 循环运行时 Excel 连接管理器的连接字符串属性才会有效。因此,在使用了连接管理器的任务中,必须将 DelayValidation 属性设置为 True 以避免出现验证错误。
  8. 选择新建 Excel 连接管理器,并在“属性”窗口中单击**“表达式”**属性,然后单击省略号。

  9. 在**“属性表达式编辑器”**中,选择 ConnectionString 属性,并单击省略号。

  10. 在表达式生成器中,输入以下表达式:

    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +  @[User::ExcelFile] + ";Extended Properties=\"" + @[User::ExtProperties] + "\""
    

    注意使用转义符“\”来转义扩展属性参数的值前后所需的内部引号。

  11. 在 Foreach 循环容器中创建任务,这些任务使用 Excel 连接管理器来在每个与指定的文件位置和模式匹配的 Excel 工作簿上执行相同的操作。

使用 Foreach ADO.NET 架构行集枚举器循环遍历 Excel 表

  1. 创建使用 Microsoft Jet OLE DB 访问接口连接 Excel 工作簿的 ADO.NET 连接管理器。在**“连接管理器”**对话框的“所有”页上,确保输入 Excel 8.0 作为“扩展属性”的值。有关详细信息,请参阅如何将连接管理器添加到包中

  2. 创建一个字符串变量,用于在每次循环迭代中接收当前表的名称。

  3. 将 Foreach 循环容器添加到**“控制流”**选项卡。有关如何配置 Foreach 循环容器的信息,请参阅如何配置 Foreach 循环容器

  4. 在**“Foreach 循环编辑器”“集合”**页上,选择 Foreach ADO.NET 架构行级枚举器。

  5. 对于**“连接”**的值,请选择前面创建的 ADO.NET 连接管理器。

  6. 对于**“架构”**的值,选择“表”。

    ms345182.note(zh-cn,SQL.90).gif注意:
    Excel 工作簿中的表列表同时包括工作表(具有 $ 后缀)和指定范围。如果要从列表中只筛选出工作表或指定范围,则必须在脚本任务中编写自定义代码来实现这一点。有关详细信息,请参阅Working with Excel Files with the Script Task
  7. 在**“变量映射”**页上,将索引 2 映射到以前创建的字符串变量,以存放当前表的名称。

  8. 关闭**“Foreach 循环编辑器”**。

  9. 在 Foreach 循环容器中创建任务,这些任务使用 Excel 连接管理器对指定工作簿中的每个 Excel 表执行相同的操作。如果您使用脚本任务来检查枚举表名或处理每个表,请记住将字符串变量添加到脚本任务的 ReadOnlyVariables 属性。

请参阅

任务

如何配置 Foreach 循环容器
如何创建属性表达式

概念

Excel 连接管理器
Excel 源
Excel 目标

其他资源

Working with Excel Files with the Script Task

帮助和信息

获取 SQL Server 2005 帮助