Последовательное получение данных со всех листов в документе Excel

Когда в качестве источника данных в проекте SSIS выступает документ Excel, есть несколько вариантов развития событий. Первый – разработчик знает в каком листе хранятся нужные данные и этот лист имеет статическое имя. Второй – данные находятся на листе, имя которого неизвестно, но его можно определить (например к статической части имени листа добавляется дата создания). Третий – разработчик не знает на каком листе могут оказаться нужные данные и каким образом формируется имя листа.

Рассмотрим варианты развитя события подробнее.

Первый. Лист имеет статическое имя.

Здесь все предельно просто, достаточно добавить в Data Flow Task истоник данных документ Excel, указать путь к документу и лист с которого будут браться данные.

Второй. Имя листа формируется динамически на основе заранее известных правил.
Здесь тоже нет ничего сверъестественного. Excel Data Source позволяет указать в качестве листа-источника данных переменную. Каким образом будет формироваться переменная зависит от проекта, но не стоит забывать, что для переменных, как и для кмпонентов workflow, можно использовать выражения (expressions).

Expressions – очень мощный инструмент, которой можно и нужно применять. Во многих случаях использование выражений поможет избежать использования Script Task’ов.

Третий. Имена листов неизвестны, сформировать имя листа невозможно.

Один из вариантов решения поставленной задачи – использование скрипт-таска, о чем хорошо написано, правда на англицокм, здесь. Но несмотря на бОльшую гибкость, которую дает скрипт-таск, все таки лучше стараться прибегать к нему в самых крайних случаях и стараться реализовывать поставленную задачу с помощью комопнентов, входящих в стандартую поставку. Поэтому мы пойдем другим путем.

Для начала нужно создать новый ADO.NET Connector, в качестве провайдера для которого будет использоваться Microsoft Jet OLE DB Provider.

Далее можно смело перейти на вкладку All, на ней нас интересуют параметры Data Source, где указывается путь к файлу Excel, и Extended Properties.

Далее нужно создать строковую переменную, в которую будет записываться имя листа Excel. В каком диапазоне должна быть видна переменная будет зависеть от задач, но можно не стесняясь сделать ее доступной всему пакету.

Теперь бросаем For Each Loop Container на Control Flow и лезем его настраивать. В качестве нумератора будем использовать Foreach ADO.NET Schema Rowset Enumerator. Установим в качестве соединения ADO.NET Connector, а в качестве схемы Tables.


А затем во влкадке Variables привзяываем созданную переменную к Index = 2. Если все сделано правильно, то при запуске пакета цикл For Each последовательно пройдется по всем листам и запишет имя листа в переменную.

В качестве простой полезной нагрузки, можно бросить в контейнер Data Flow Task, в который поместить Excel Source, в настройках которого указать, что имя листа берется из переменной, и какую-либо БД в качестве назначения.

Ссылки:

TechNet: http://technet.microsoft.com/en-us/library/ms345182.aspx

Запись опубликована в рубрике Business Intelligence с метками , . Добавьте в закладки постоянную ссылку.

19 Responses to Последовательное получение данных со всех листов в документе Excel

  1. Уведомление: Добавление данных в Raw File Destination внутри ForEach Loop контейнера | BI Tech

  2. Уведомление: … | BI Tech

  3. near the bars and restaurants

  4. Jack пишет:

    Whеn youre serious abߋut a new profession as a paraⅼeցal,
    there are a selectiion of options whiϲh youⅼl consider.
    Yoᥙ may resolvе that being a freelаnce paralegal is tthe
    way that you want to pᥙrsue this field. You can begin by weighing the professіonals and cons of this excitіng new
    method oof working in the paralegal field; and chances are youll decide that its the
    best choiсe fⲟr you.

  5. Read more to find out about online poker roulette.

  6. Epppu.inoxdvr.com пишет:

    — воры бессовестные, выиграть нереально.

  7. Quyen пишет:

    That is now possible for players on Casumo Casino!

  8. situs judi bola murah пишет:

    Great blog right here! Additionally your site loads up fast!
    What host are you the usage of? Can I get your affiliate link to your host?
    I desire my website loaded up as fast as yours lol

  9. law cost drafting пишет:

    It’s an awesome post in favor of all the online viewers; they will take advantage from it I am sure.

  10. Coin master is all a few digital slot machine.

  11. I read this piece of writing completely concerning the difference of most recent and preceding technologies, it’s amazing article.

  12. my website пишет:

    Excellent goods from you, man. I’ve remember your stuff prior to and you’re just extremely excellent.
    I actually like what you’ve bought right here, certainly like what you are
    stating and the way in which during which you are
    saying it. You are making it entertaining and you continue
    to care for to keep it sensible. I can’t wait to read much more from you.
    That is actually a great website.

  13. senior agen sbobet пишет:

    I have read a few just right stuff here. Certainly price bookmarking for revisiting.
    I surprise how so much attempt you set to make any such magnificent informative
    website.

  14. Esports-Indonesia пишет:

    I have been exploring for a little for any high quality articles or weblog posts on this sort of
    space . Exploring in Yahoo I ultimately stumbled upon this web
    site. Studying this information So i’m glad to express that I have a very good uncanny feeling I discovered just what I needed.
    I such a lot no doubt will make sure to do not fail to remember this web site and give it a glance regularly.

  15. Vaughan RCM course пишет:

    First of all I want to say awesome blog! I had a quick question that I’d like to ask if you don’t mind.
    I was curious to know how you center yourself and clear your mind before writing.
    I have had trouble clearing my mind in getting my thoughts out.
    I do take pleasure in writing however it just seems like
    the first 10 to 15 minutes are wasted simply just trying to figure out how to begin. Any
    ideas or hints? Appreciate it!

  16. смарт пишет:

    Wow! In the end I got a weblog from where I be able to really get useful information regarding
    my study and knowledge.

  17. My brother suggested I may like this web site.
    He was once entirely right. This post truly made my day.
    You can not consider simply how much time I had spent for this information! Thank you!

Добавить комментарий для situs judi bola murah Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *