Gå igenom Excel-filer och tabeller med en foreach-loopcontainer

Gäller för:SQL Server SSIS Integration Runtime i Azure Data Factory

Procedurerna i detta ämne beskriver hur man loopar genom Excel-arbetsböckerna i en mapp, eller genom tabellerna i en Excel-arbetsbok, genom att använda Foreach Loop-behållaren med lämplig enumerator.

Important

Detaljerad information om hur du ansluter till Excel-filer och om begränsningar och kända problem med att läsa in data från eller till Excel-filer finns i Läsa in data från eller till Excel med služba SSIS (SSIS).

För att loopa genom Excel-filer med hjälp av Foreach File enumerator

  1. Skapa en strängvariabel som tar emot den aktuella Excel-sökvägen och filnamnet vid varje iteration av loopen. För att undvika valideringsproblem, tilldela en giltig Excel-sökväg och filnamn som initialvärdet för variabeln. (Exempeluttrycket som visas senare i denna procedur använder variabelnamnet, ExcelFile.)

  2. Eventuellt kan du skapa en annan strängvariabel som håller värdet för argumentet Utökade egenskaper för Excel reťazec pripojenia. Detta argument innehåller en serie värden som specificerar Excel-versionen och avgör om den första raden innehåller kolumnnamn och om importläge används. (Exempeluttrycket som visas senare i denna procedur använder variabelnamnet ExtProperties, med initialvärdet "Excel 12.0;HDR=Yes".)

    Om du inte använder en variabel för argumentet Extended Properties, måste du manuellt lägga till den i uttrycket som innehåller reťazec pripojenia.

  3. Lägg till en Foreach Loop-container i fliken Control Flow . För information om hur man konfigurerar Foreach Loop Container, se Konfigurera en Foreach Loop Container.

  4. På samlingssidan i Foreach Loop Editor, välj Foreach File enumerator, ange mappen där Excel arbetsböckerna finns och ange filfiltret (vanligtvis *.xlsx).

  5. På sidan Variabelmappning, mappa Index 0 till en användardefinierad strängvariabel som får den aktuella Excel-sökvägen och filnamnet vid varje iteration av loopen. (Exempeluttrycket som visas senare i denna procedur använder variabelnamnet ExcelFile.)

  6. Stäng Foreach Loop Editor.

  7. Lägg till en Excel connection manager till paketet enligt beskrivningen i Lägg till, ta bort eller dela en Správca pripojení i ett paket. Välj en befintlig Excel-arbetsboksfil för anslutningen för att undvika valideringsfel.

    Important

    För att undvika valideringsfel när du konfigurerar uppgifter och dataflödeskomponenter som använder denna Excel connection manager, välj en befintlig Excel arbetsbok i Excel Správca pripojení Editor. Anslutningshanteraren kommer inte att använda den här arbetsboken under körning efter att du har konfigurerat ett uttryck för ConnectionString-egenskapen som beskrivs i följande steg. Efter att du skapat och konfigurerat paketet kan du rensa värdet av egenskapen ConnectionString i Properties window. Men om du rensar detta värde är reťazec pripojenia-egenskapen i Excel-anslutningshanteraren inte längre geldig förrän Foreach Loop körs. Därför måste du sätta egenskapen DelayValidation till True på de uppgifter där anslutningshanteraren används, eller på paketet, för att undvika valideringsfel.

    Du måste också använda standardvärdet False för egenskapen RetainSameConnection i Excel-anslutningshanteraren. Om du ändrar detta värde till True kommer varje iteration av loopen att fortsätta öppna den första Excel-arbetsboken.

  8. Välj den nya Excel-anslutningshanteraren, klicka på egenskapen Expressions i Properties window och klicka sedan på ellipsen.

  9. I Property Expressions Editor, välj egenskapen ConnectionString och klicka sedan på ellipsen.

  10. I Expression Builder, ange följande uttryck:

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

    Observera användningen av escape-tecknet "\" för att undvika de inre citattecknen som krävs kring värdet på argumentet Utökade egenskaper.

    Argumentet Utökade egenskaper är inte valfritt. Om du inte använder en variabel för att innehålla dess värde, måste du lägga till den manuellt i uttrycket, som i följande exempel:

    "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +  @[User::ExcelFile] + ";Extended Properties=Excel 12.0"  
    
  11. Skapa uppgifter i Foreach Loop-containern som använder Excel-anslutningshanteraren för att utföra samma operationer på varje Excel-arbetsbok som matchar den angivna filplatsen och mönstret.

För att loopa genom Excel-tabeller genom att använda Foreach ADO.NET Schema Rowset enumerator

  1. Skapa en ADONET-anslutningshanterare som använder Microsoft ACE OLE DB Provider för att ansluta till en Excel-arbetsbok. På sidan Alla i dialogrutan Správca pripojení, se till att du anger Excel-versionen – i detta fall Excel 12.0 – som värdet på egenskapen Utökade egenskaper. Mer information finns i Lägga till, ta bort eller dela en anslutningshanterare i ett paket.

  2. Skapa en strängvariabel som får namnet på den aktuella tabellen vid varje iteration av loopen.

  3. Lägg till en Foreach Loop-container i fliken Control Flow . För information om hur man konfigurerar Foreach Loop-containern, se Configure a Foreach Loop Container.

  4. På Collection-sidan i Foreach Loop Editor, välj Foreach ADONET Schema Rowset enumerator.

  5. För värdet för Connection väljer du den ADO.NET-anslutningshanterare som du tidigare har skapat.

  6. Som värdet för Schema, välj Tabeller.

    Note

    Listan över tabeller i en Excel-arbetsbok inkluderar både arbetsblad (som har suffixet $) och namngivna intervall. Om du måste filtrera listan för endast arbetsblad eller namngivna intervall, kan du behöva skriva anpassad kod i en Script-uppgift för detta ändamål. För mer information, se Arbeta med Excel-filer med Script-uppgiften.

  7. På sidan Variabelmappningar , mappa Index 2 till den strängvariabel som skapades tidigare för att hålla namnet på den aktuella tabellen.

  8. Stäng Foreach Loop Editor.

  9. Skapa uppgifter i Foreach Loop-containern som använder Excel-anslutningshanteraren för att utföra samma operationer på varje Excel-tabell i den angivna arbetsboken. Om du använder en Script Task för att undersöka det uppräknade tabellnamnet eller för att arbeta med varje tabell, kom ihåg att lägga till strängvariabeln i ReadOnlyVariables-egenskapen för Script-uppgiften.