Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
SSIS Integration Runtime in Azure Data Factory
De procedures in dit onderwerp beschrijven hoe je door de Excel-werkboeken in een map loopt, of door de tabellen in een Excel-werkboek, door gebruik te maken van de Foreach Loop-container met de juiste enumerator.
Important
Zie Gegevens laden van of naar Excel met SQL Server Integration Services (SSIS) voor gedetailleerde informatie over het maken van verbinding met Excel-bestanden en over beperkingen en bekende problemen bij het laden van gegevens van of naar Excel-bestanden.
Om door Excel-bestanden te lopen met behulp van de Foreach File enumerator
Maak een stringvariabele aan die bij elke iteratie van de lus het huidige Excel-pad en bestandsnaam ontvangt. Om validatieproblemen te voorkomen, wijs je een geldig Excel-pad en bestandsnaam toe als beginwaarde van de variabele. (De voorbeelduitdrukking die later in deze procedure wordt getoond, gebruikt de variabelennaam,
ExcelFile.)Maak optioneel een andere stringvariabele aan die de waarde voor het Extended Properties-argument van de Excel verbindingsreeks bevat. Dit argument bevat een reeks waarden die de Excel-versie specificeren en bepalen of de eerste rij kolomnamen bevat en of importmodus wordt gebruikt. (De voorbeelduitdrukking die later in deze procedure wordt getoond, gebruikt de variabelenaam
ExtProperties, met een beginwaarde van "Excel 12.0;HDR=Yes".)Als je geen variabele gebruikt voor het Extended Properties-argument, moet je deze handmatig toevoegen aan de expressie die de verbindingsreeks bevat.
Voeg een Foreach Loop-container toe aan het tabblad Control Flow . Voor informatie over hoe de Foreach Loop Container te configureren, zie Configure a Foreach Loop Container.
Selecteer op de Collection-pagina van de Foreach Loop Editor de Foreach File enumerator, geef de map aan waarin de Excel werkboeken zich bevinden, en geef het bestandsfilter aan (normaal *.xlsx).
Op de pagina Variabelentoewijzing koppel Index 0 aan een door de gebruiker gedefinieerde stringvariabele die bij elke iteratie van de lus het huidige Excel-pad en bestandsnaam ontvangt. (De voorbeelduitdrukking die later in deze procedure wordt getoond, gebruikt de variabelenaam
ExcelFile.)Sluit de Foreach Loop Editor.
Voeg een Excel connection manager toe aan het pakket zoals beschreven in Voeg toe, verwijderen of deel een Verbindingsbeheer in een pakket. Selecteer een bestaand Excel-werkboekbestand voor de verbinding om validatiefouten te voorkomen.
Important
Om validatiefouten te voorkomen bij het configureren van taken en datastroomcomponenten die deze Excel connection manager gebruiken, selecteer je een bestaand Excel werkboek in de Excel Verbindingsbeheer Editor. De verbindingsmanager zal dit werkboek niet gebruiken tijdens runtime nadat je een expressie voor de ConnectionString-eigenschap hebt geconfigureerd zoals beschreven in de volgende stappen. Nadat je het pakket hebt gemaakt en geconfigureerd, kun je de waarde van de ConnectionString-eigenschap wissen in het venster Eigenschappen. Als je deze waarde echter verwijdert, is de eigenschap verbindingsreeks van de Excel-verbindingsmanager niet langer geldig totdat de Foreach Loop wordt uitgevoerd. Daarom moet je de eigenschap DelayValidation op True zetten op de taken waarin de verbindingsmanager wordt gebruikt, of op het pakket, om validatiefouten te voorkomen.
Je moet ook de standaardwaarde False gebruiken voor de RetainSameConnection-eigenschap van de Excel-verbindingsbeheerder. Als je deze waarde wijzigt in True, blijft elke iteratie van de lus het eerste Excel-werkboek openen.
Selecteer de nieuwe Excel-verbindingsmanager, klik op de eigenschap Expressions in het venster Eigenschappen en klik vervolgens op de ellips.
Selecteer in de Property Expressions Editor de eigenschap ConnectionString en klik vervolgens op de ellips.
In de Expression Builder voer je de volgende expressie in:
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @[User::ExcelFile] + ";Extended Properties=\"" + @[User::ExtProperties] + "\""Let op het gebruik van het escapeteken "\" om de interne aanhalingstekens rond de waarde van het argument 'Extended Properties' te escapen.
Het argument Uitgebreide Eigenschappen is niet optioneel. Als je geen variabele gebruikt om de waarde ervan te bevatten, moet je deze handmatig aan de expressie toevoegen, zoals in het volgende voorbeeld:
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @[User::ExcelFile] + ";Extended Properties=Excel 12.0"Maak taken aan in de Foreach Loop-container die de Excel-verbindingsmanager gebruiken om dezelfde bewerkingen uit te voeren op elk Excel-werkboek dat overeenkomt met de opgegeven bestandslocatie en het patroon.
Om door Excel-tabellen te lopen met behulp van de Foreach ADO.NET Schema Rowset enumerator
Maak een ADONET-verbindingsmanager aan die de Microsoft ACE OLE DB Provider gebruikt om verbinding te maken met een Excel-werkboek. Zorg er op de pagina Alle van het dialoogvenster Verbindingsbeheer voor dat je de Excel-versie — in dit geval Excel 12.0 — invoert als waarde voor de eigenschap Uitgebreide eigenschappen. Voor meer informatie, zie Voeg toe, verwijder of deel een Verbindingsbeheer in een pakket.
Maak een stringvariabele aan die bij elke iteratie van de lus de naam van de huidige tabel ontvangt.
Voeg een Foreach Loop-container toe aan het tabblad Control Flow . Voor informatie over hoe de Foreach Loop-container te configureren, zie Configure a Foreach Loop Container.
Selecteer op de Collection-pagina van de Foreach Loop Editor de Foreach ADONET Schema Rowset enumerator.
Als waarde van Connection selecteer je de ADO.NET connection manager die je eerder hebt aangemaakt.
Selecteer Tabellen als de waarde van Schema.
Note
De lijst met tabellen in een Excel-werkboek bevat zowel werkbladen (die het $ achtervoegsel hebben) als benoemde bereiken. Als je de lijst zo moet filteren dat deze alleen werkbladen of alleen benoemde bereiken bevat, moet je hiervoor mogelijk aangepaste code schrijven in een Scripttaak. Voor meer informatie, zie Werken met Excel-bestanden met de Scripttaak.
Wijs op de pagina Variabelekoppelingen index 2 toe aan de eerder aangemaakte stringvariabele waarin de naam van de huidige tabel wordt opgeslagen.
Sluit de Foreach Loop Editor.
Maak taken aan in de Foreach Loop-container die de Excel-verbindingsmanager gebruiken om dezelfde bewerkingen uit te voeren op elke Excel-tabel in het opgegeven werkboek. Als je een Script-taak gebruikt om de geenummerde tabelnaam te onderzoeken of om met elke tabel te werken, vergeet dan niet de stringvariabele toe te voegen aan de ReadOnlyVariables-eigenschap van de Script-taak.