eksport selecta do Exela przy niewiadomej liczbie kolumn

eksport selecta do Exela przy niewiadomej liczbie kolumn
N5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
0

Cześć,

Opis zagadnienia:
Potrzebuję stworzyć procedurę, która zapisze rezultat zapytania do pliku Excel. Liczba kolumn w zapytaniu i ich nazwy są różne. Pracuję na MS SQL Server 2017.

Co próbuję zrobić:

INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0; Database=C:\Zestawienia\Zestawienie1.xlsx;','SELECT * FROM [Arkusz1$]') SELECT * FROM tabela

Trudności:
Powyższy insert wymaga, aby w pliku xlsx były wpisane kolumny, a ich nazwy muszą być takie same jak te zwracane przez select. Pytanie, czy istnieje możliwość z pozycji kodu zaprogramowania procedury tak, aby tworzyła nowy plik i uzupełniała go o wartości z rezultatu zapytania? Nie mam możliwości sprawdzenia, czy select zwróci 3 kolumny czy 10.

Przykład działania:
Select * from tabela zwraca :

ID NAME POWER
1 test1 100
2 test2 150
3 test3 50

Otrzymujemy excel
utworzony plik.PNG

Czy macie może pomysł, w jaki sposób mogę wyeksportować rezultat zapytania do excela?

N5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
0

Na tym bazowałem, jednakże z poziomu kodu sql jest opis wyłącznie dla statycznej liczby określonych kolumn.

.andy
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1524
0

Ale jak o zmiennej ilości kolumn? Tabele się na serwerze zmieniają w czasie rzeczywistym, czy po prostu dla niektórych wierszy masz wartości nullowe?

N5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
0

Docelowo pragnę stworzyć procedurę(kod), która przyjmie w parametrze **dowolny ** select na bazę(varchar) i wygeneruje plik excel z danymi zwracanymi przez selecta. Pytanie czy mogę utworzyć i uzupełnić pusty plik excel bez dodatkowego kodowania.

Znalazłem sposób, link który to spełnia, wymaga jednak RStudio i dodatkowych elementów, których w rozwiązaniu wolałbym uniknąć. Dlatego szukam sposobu na zrobienie tego z poziomu kodu sql.

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3902
0

A nie prościej kopiować od strony Excela, to zaledwie kilka linijek w vba...

Generalnie nie wyeksportujesz danych jeżeli nazwy kolumn nie bedą sie zgadzać, rozwiazania z bcp polegaja na generowaniu CSV i otwieraniu w excelu.

.andy
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1524
0

A nie da się najpierw pociągnąć schematu tabeli i na jej podstawie stworzyć tego w Excelu i potem pociągnąć do niego dane?

N5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
0

Dzięki za odpowiedzi. Pójdę tą drogą. Jeżeli coś jeszcze znajdę to uzupełnię temat. Udanego weekendu

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.