Zadanie: w oparciu o dane zwracane przez zapytanie SQL, generuj automatyczne raporty okresowe indywidualnie dla każdego klienta i zapisz je jako osobny plik programu Excel o nazwie nazwa_klienta + [YY-MM] .xlsx (lub jeden plik znacznika czasu z osobnym arkuszem roboczym dla każdego klienta).
Identyfikator klienta może się zmieniać co miesiąc, lista klientów docelowych jest generowana przez zapytanie SQL.
Jaka byłaby najlepsza technologia? Dotychczasowe studia:
SSIS: Nazwy plików lub kart programu Excel powinny być wstępnie zdefiniowane w zadaniach sterowania przepływem i przepływie danych i nie można ich konfigurować dynamicznie. Wynik to niesformatowany plik CSV (zły, ale może sobie z nim poradzić).
Przewyższać: Mogę umieścić zbiorcze dane dla wszystkich klientówExcel, ale nie jestem pewien, czy można napisać makro, które będzie pobierać unikalnych klientów, tworzyć odpowiednie karty i umieścić odpowiednie dane w każdym z nich.
SSRS: Funkcja subskrypcji jest wyłączona na poziomie korporacyjnym - nie może jej użyć :( Mimo to nie jest pewne, czy akceptuje parametry dynamiczne takie jak ta.
Czy tęskniłem za jakąś opcją? A może jest dostępna inna technologia?
Odpowiedzi:
2 dla odpowiedzi № 1SSIS będzie tu najlepszą opcją z następujących powodów:
- Możesz ustawić zestaw szablonów excela, jeśli masz skończoną liczbę wzorów, a następnie użyj SSIS do zapełnienia i zmiany nazwy szablonu całkiem łatwo.
- Jeśli potrzebujesz dokładniejszej kontroli, możesz użyć Interop i C #, aby zrobić prawie wszystko, co chcesz w Excelu, jednak jest to bardzo powolne do wykonania i jest czasochłonne do zbudowania.
- Łatwo jest ustawić pętlę wykonawczą nazestaw danych (twoja lista klientów) i uwzględniać szablony lub karty, których potrzebują jako część zestawu danych, co sprawia, że konserwacja i dodawanie nowych klientów jest prostsze i prawdopodobnie coś, co można przenieść na stronę biznesową.
Oczywiście SSIS ma także kilka wad, takich jak trudności z uzyskaniem współdziałania formatów kolumny excel podczas korzystania ze złącza Excel, ale nadal jest to prawdopodobnie najlepsza opcja.