Share via


Cómo crear bucles entre archivos y tablas de Excel

Actualizado: 17 de julio de 2006

Los procedimientos de este tema explican cómo crear bucles entre libros de Excel en una carpeta o entre tablas en un libro de Excel, mediante el contenedor de bucles Foreach con el enumerador correspondiente.

Para crear un bucle entre libros de Excel con el enumerador de archivos para Foreach

  1. Cree una variable de cadena que recibirá la ruta de acceso y nombre de archivo de Excel actuales en cada iteración del bucle. (La expresión de ejemplo que se muestra más adelante en este procedimiento utiliza el nombre de variable ExcelFile.)

    [!NOTA] Para evitar problemas de validación, asigne una ruta de acceso y un nombre de archivo de Excel como valor inicial de la variable.

  2. Cree otra variable de cadena que contendrá el valor del argumento Propiedades extendidas de la cadena de conexión de Excel. Este argumento contiene una serie de valores que especifican la versión de Excel y determinan si la primera fila contiene nombres de columna, y si se utiliza un modo de importación. (La expresión de ejemplo mostrada más adelante en este procedimiento utiliza el nombre de la variable ExtProperties, con el valor inicial de "Excel 8.0;HDR=Yes``".)

  3. Agregue un contenedor de bucles Foreach a la ficha Flujo de control. Para obtener más información acerca de cómo configurar el contenedor de bucles Foreach, vea Cómo configurar un contenedor de bucles Foreach.

  4. En la página Colección del Editor de bucles Foreach, seleccione el enumerador de archivos para Foreach, y especifique la carpeta en la que se encuentran los libros de Excel y el filtro de archivos (generalmente *.xls).

  5. En la página Asignaciones de variables, asigne Índice 0 a una variable de cadena definida por el usuario que recibirá la ruta de acceso y el nombre de archivo de Excel actuales en cada iteración del bucle. (La expresión de ejemplo que se muestra más adelante en este procedimiento utiliza el nombre de variable ExcelFile.)

  6. Cierre el Editor de bucles Foreach.

  7. Agregue un administrador de conexión con Excel al paquete como se describe en Cómo agregar un administrador de conexión a un paquete. Seleccione un libro de Excel existente para la conexión a fin de evitar que se produzcan errores de validación.

    ms345182.note(es-es,SQL.90).gifImportante:
    Para evitar que se produzcan errores de validación al configurar tareas y componentes del flujo de datos que utilizan este administrador de conexión con Excel, seleccione un libro de Excel existente en el Editor del Administrador de conexión con Excel. El administrador de conexión no utilizará ese libro en tiempo de ejecución después de configurar una expresión para la propiedad ConnectionString como se describe en los pasos siguientes. Tras crear y configurar el paquete, puede borrar el valor de la propiedad ConnectionString en la ventana Propiedades. Sin embargo, tras borrar ese valor, la propiedad de cadena de conexión del administrador de conexión con Excel pierde su validez hasta que se ejecuta el bucle Foreach. Por lo tanto, debe establecer la propiedad DelayValidation en True en las tareas en las que se utiliza el administrador de conexión, o bien en el paquete, para evitar errores de validación.
  8. Seleccione el nuevo administrador de conexión con Excel, haga clic en la propiedad Expresiones en la ventana Propiedades, y luego haga clic en los puntos suspensivos.

  9. En el Editor de expresiones de propiedad, seleccione la propiedad ConnectionString y haga clic en los puntos suspensivos.

  10. En el Generador de expresiones, escriba la siguiente expresión:

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

    Observe el uso del carácter de escape "\" para las comillas internas necesarias en el valor del argumento Propiedades extendidas.

  11. Cree tareas en el contenedor de bucles Foreach que utilicen el administrador de conexión con Excel para realizar las mismas operaciones en cada libro de Excel que coincida con la ubicación y el patrón del archivo especificados.

Para crear un bucle entre tablas de Excel con el enumerador de conjunto de filas del esquema para Foreach de ADO.NET

  1. Cree un administrador de conexión de ADO.NET que utilice el proveedor OLE DB para Microsoft Jet para conectarse al libro de Excel. En la página Todas del cuadro de diálogo Administrador de conexión, asegúrese de especificar Excel 8.0 como valor para la propiedad Propiedades extendidas. Para obtener más información, vea Cómo agregar un administrador de conexión a un paquete.

  2. Cree una variable de cadena que recibirá el nombre de la tabla actual en cada iteración del bucle.

  3. Agregue un contenedor de bucles Foreach a la ficha Flujo de control. Para obtener más información acerca de cómo configurar el contenedor de bucles Foreach, vea Cómo configurar un contenedor de bucles Foreach.

  4. En la página Colección del Editor de bucles Foreach, seleccione el enumerador de conjunto de filas del esquema para Foreach de ADO.NET.

  5. Como valor de Conexión, seleccione el administrador de conexión de ADO.NET que creó previamente.

  6. Como valor de Esquema, seleccione Tablas.

    [!NOTA] La lista de tablas de un libro de Excel incluye tanto hojas (que tienen el sufijo $) como rangos con nombre. Si tiene que filtrar la lista para obtener sólo las hojas o sólo los rangos con nombre, escriba código personalizado en una tarea Secuencia de comandos para este fin. Para obtener más información, vea Working with Excel Files with the Script Task.

  7. En la página Asignaciones de variables, asigne Índice 2 a la variable de cadena que creó antes para albergar el nombre de la tabla actual.

  8. Cierre el Editor de bucles Foreach.

  9. Cree tareas en el contenedor de bucles Foreach que utilicen el administrador de conexión con Excel para realizar las mismas operaciones en cada tabla de Excel en el libro especificado. Si utiliza una tarea Secuencia de comandos para examinar el nombre de la tabla enumerada o para trabajar con cada tabla, recuerde agregar la variable de cadena a la propiedad ReadOnlyVariables de la tarea Secuencia de comandos.

Vea también

Tareas

Cómo configurar un contenedor de bucles Foreach
Cómo crear una expresión de propiedad

Conceptos

Administrador de conexión con Excel
Origen de Excel
Destino de Excel

Otros recursos

Working with Excel Files with the Script Task

Ayuda e información

Obtener ayuda sobre SQL Server 2005