Percorrer ficheiros e tabelas do Excel com um contentor de ciclo Foreach

Aplica-se a: SQL Server SSIS Integration Runtime em Azure Data Factory

Os procedimentos deste tópico descrevem como percorrer os livros do Excel numa pasta, ou as tabelas de um livro do Excel, utilizando o contentor Foreach Loop com o enumerador adequado.

Importante

Para obter informações detalhadas sobre como se conectar a arquivos do Excel e sobre limitações e problemas conhecidos para carregar dados de ou para arquivos do Excel, consulte Carregar dados de ou para o Excel com o SQL Server Integration Services (SSIS).

Para percorrer ficheiros Excel usando o enumerador Foreach File

  1. Crie uma variável string que receba o caminho Excel atual e o nome do ficheiro em cada iteração do ciclo. Para evitar problemas de validação, atribui um caminho Excel válido e um nome de ficheiro como valor inicial da variável. (A expressão de exemplo mostrada mais adiante neste procedimento usa o nome da variável, ExcelFile.)

  2. Opcionalmente, crie outra variável do tipo string para conter o valor do argumento Propriedades Estendidas da cadeia de ligação do Excel. Este argumento contém uma série de valores que especificam a versão Excel e determinam se a primeira linha contém nomes de colunas e se é utilizado o modo de importação. (A expressão de exemplo mostrada mais adiante neste procedimento usa o nome ExtPropertiesda variável , com um valor inicial de "Excel 12.0;HDR=Yes".)

    Se não utilizar uma variável para o argumento Propriedades Estendidas, deve então adicioná-la manualmente na expressão que contém a cadeia de ligação.

  3. Adicione um contentor Foreach Loop ao separador Control Flow . Para informações sobre como configurar o Contentor de Loop Foreach, consulte Configurar um Contentor de Loop Foreach.

  4. Na página Coleção do Editor do Ciclo Foreach, selecione o enumerador Foreach File, indique a pasta onde estão localizados os livros do Excel e indique o filtro de ficheiros (normalmente *.xlsx).

  5. Na página de Mapeamento de Variáveis, mapeie o Índice 0 para uma variável de cadeia definida pelo utilizador que receberá o caminho Excel atual e o nome do ficheiro em cada iteração do ciclo. (A expressão de exemplo mostrada mais adiante neste procedimento usa o nome ExcelFileda variável .)

  6. Feche o Editor de Ciclo Foreach.

  7. Adicione um Excel connection manager ao pacote conforme descrito em Adicionar, Eliminar ou Partilhar um Gestor de Ligações num Pacote. Selecione um ficheiro de livro do Excel existente para a ligação, de modo a evitar erros de validação.

    Importante

    Para evitar erros de validação ao configurar tarefas e componentes de fluxo de dados que utilizam este Excel connection manager, selecione um livro de trabalho de Excel existente no Excel Gestor de Ligações Editor. O gestor de conexões não utilizará este livro de exercícios em tempo de execução depois de configurar uma expressão para a propriedade ConnectionString , conforme descrito nos passos seguintes. Depois de criar e configurar o pacote, pode limpar o valor da propriedade ConnectionString na janela Propriedades. No entanto, se eliminar este valor, a propriedade cadeia de ligação do gestor de conexões do Excel deixa de ser válida até que o Loop Foreach seja executado. Por isso, deve definir a propriedade DelayValidation como Verdadeira nas tarefas em que o gestor de ligação é utilizado, ou no pacote, para evitar erros de validação.

    Também tem de utilizar o valor predefinido False para a propriedade RetainSameConnection do gestor de ligações do Excel. Se mudares este valor para Verdadeiro, cada iteração do ciclo continuará a abrir o primeiro livro de exercícios Excel.

  8. Seleciona o novo gestor de ligações Excel, clica na propriedade Expressões na janela Propriedades e depois clica na elipse.

  9. No Editor de Expressões de Propriedades, selecione a propriedade ConnectionString e depois clique na reticente.

  10. No Construtor de Expressões, introduza a seguinte expressão:

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

    Note o uso do carácter de escape "\" para escapar das aspas internas exigidas em torno do valor do argumento Propriedades Estendidas.

    O argumento das Propriedades Estendidas não é opcional. Se não usar uma variável para conter o seu valor, então deve adicioná-la manualmente à expressão, como no seguinte exemplo:

    "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +  @[User::ExcelFile] + ";Extended Properties=Excel 12.0"  
    
  11. Crie tarefas no contentor Foreach Loop que utilizem o gestor de conexões Excel para realizar as mesmas operações em cada livro de trabalho Excel que correspondam à localização e padrão especificados do ficheiro.

Para percorrer tabelas Excel usando o enumerador de linhas de esquemas Foreach ADO.NET

  1. Crie um gestor de ligações ADO.NET que utilize o Microsoft ACE OLE DB Provider para se ligar a um livro de exercícios Excel. Na página Tudo da caixa de diálogo Gestor de Ligações, certifique-se de inserir a versão Excel – neste caso, Excel 12.0 – como valor da propriedade Propriedades Estendidas. Para mais informações, consulte Adicionar, Eliminar ou Partilhar um Gestor de Ligações num Pacote.

  2. Crie uma variável string que receba o nome da tabela atual em cada iteração do ciclo.

  3. Adicione um contentor Foreach Loop ao separador Control Flow . Para informações sobre como configurar o contentor Foreach Loop, consulte Configurar um Contentor Foreach Loop.

  4. Na página de Coleção do Editor de Loops Foreach, selecione o enumerador de Rowset de Esquemas Foreach ADO.NET.

  5. Como valor de Ligação, selecione o gestor de ligação ADO.NET que criou anteriormente.

  6. Como valor de Esquema, selecione Tabelas.

    Note

    A lista de tabelas num livro de exercícios Excel inclui tanto folhas de trabalho (que têm o sufixo $) como intervalos nomeados. Se tiveres de filtrar a lista apenas para folhas de trabalho ou apenas intervalos nomeados, podes ter de escrever código personalizado numa tarefa Script para esse fim. Para mais informações, consulte Trabalhar com Ficheiros Excel com a Tarefa de Script.

  7. Na página de Mapeamentos de Variáveis , mape o Índice 2 para a variável string criada anteriormente para conter o nome da tabela atual.

  8. Feche o Editor de Ciclo Foreach.

  9. Crie tarefas no contentor Foreach Loop que utilizem o gestor de ligações do Excel para efetuar as mesmas operações em cada tabela do Excel no livro especificado. Se usar uma tarefa Script para examinar o nome da tabela enumerada ou para trabalhar com cada tabela, lembre-se de adicionar a variável string à propriedade ReadOnlyVariables da tarefa Script.