Jak przenieść lub wyeksportować dane SQL Server 2005 do Excela

Mam proste zapytanie SQL 'Select' i chciałbym wrzucić wyniki do pliku Excel. Jestem w stanie zapisać tylko jako .csv i konwersja do .xls tworzy bardzo brzydkie wyjście. W każdym razie ,o ile mogę powiedzieć (za pomocą Google) to nie wydaje się być tak proste. Każda pomoc będzie bardzo mile widziana.

Author: YourMomzThaBomb, 2008-09-18

14 answers

Użyj "danych zewnętrznych" z Excela. Może używać połączenia ODBC do pobierania danych z zewnętrznego źródła: Data / Get External Data / New Database Query

W ten sposób, nawet jeśli dane w bazie danych ulegną zmianie, można łatwo odświeżyć.

 37
Author: Sunny Milenov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 21:25:09

SSIS jest bezmyślny do robienia takich rzeczy i jest bardzo prosty (i to jest po prostu coś, co jest).

  1. Kliknij prawym przyciskiem myszy bazę danych w SQL Management Studio
  2. Przejdź do zadań, a następnie Eksportuj dane, zobaczysz łatwy w użyciu kreator.
  3. Twoja baza danych będzie źródłem, możesz wprowadzić swoje zapytanie SQL
  4. Wybierz Excel jako cel
  5. uruchom go na końcu kreatora

Jeśli chcesz, możesz zapisać pakiet SSIS jako cóż (jest opcja na końcu kreatora) tak, że można to zrobić w harmonogramie lub coś (a nawet otworzyć i zmodyfikować, aby dodać więcej funkcjonalności w razie potrzeby).

 59
Author: Ryan Farley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 21:17:59

Znalazłem łatwy sposób na eksport wyników zapytań z SQL Server Management Studio 2005 do Excela.

1) Wybierz pozycję menu zapytanie - > Opcje zapytania.

2) Ustaw pole wyboru w Results - > Grid - > Dołącz nagłówki kolumn podczas kopiowania lub zapisywania wyników .

Następnie, po wybraniu wszystkich i skopiowaniu wyników zapytania, możesz wkleić je do programu Excel, a nagłówki kolumn będą obecne.

 26
Author: Mikhail Glukhov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-20 13:44:26

Zobacz to


Jest to zdecydowanie najlepszy post do eksportu do Excela z SQL:

Http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926

Cytuję od użytkownika madhivanan,

Oprócz korzystania z DTS i Export wizard, możemy również użyć tego zapytania do eksportu danych z SQL Server2000 do Excela

Utwórz plik Excel o nazwie testing mający nagłówki takie same jak w kolumnach tabeli i użyj tych zapytań

1 Eksport danych do istniejący plik Excela z tabeli SQL Server

insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=D:\testing.xls;', 
    'SELECT * FROM [SheetName$]') select * from SQLServerTable

2 Eksport danych z Excela do nowej tabeli SQL Server

select * 
into SQLServerTable FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=D:\testing.xls;HDR=YES', 
    'SELECT * FROM [Sheet1$]')

3 Eksport danych z Excela do istniejącej tabeli SQL Server

Insert into SQLServerTable Select * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=D:\testing.xls;HDR=YES', 
    'SELECT * FROM [SheetName$]')

4 Jeśli nie chcesz wcześniej tworzyć pliku EXCEL i chcesz eksportować do niego dane, użyj

EXEC sp_makewebtask 
    @outputfile = 'd:\testing.xls', 
    @query = 'Select * from Database_name..SQLServerTable', 
    @colheaders =1, 
    @FixedFont=0,@lastupdated=0,@resultstitle='Testing details'

(Teraz możesz znaleźć plik z danymi w formacie tabelarycznym)

5 aby wyeksportować dane do nowego pliku EXCEL z nagłówkiem (nazwami kolumn), Utwórz następującą procedurę

create procedure proc_generate_excel_with_columns
(
    @db_name    varchar(100),
    @table_name varchar(100),   
    @file_name  varchar(100)
)
as

--Generate column names as a recordset
declare @columns varchar(8000), @sql varchar(8000), @data_file varchar(100)
select 
    @columns=coalesce(@columns+',','')+column_name+' as '+column_name 
from 
    information_schema.columns
where 
    table_name=@table_name
select @columns=''''''+replace(replace(@columns,' as ',''''' as '),',',',''''')

--Create a dummy file to have actual data
select @data_file=substring(@file_name,1,len(@file_name)-charindex('\',reverse(@file_name)))+'\data_file.xls'

--Generate column names in the passed EXCEL file
set @sql='exec master..xp_cmdshell ''bcp " select * from (select '+@columns+') as t" queryout "'+@file_name+'" -c'''
exec(@sql)

--Generate data in the dummy file
set @sql='exec master..xp_cmdshell ''bcp "select * from '+@db_name+'..'+@table_name+'" queryout "'+@data_file+'" -c'''
exec(@sql)

--Copy dummy file to passed EXCEL file
set @sql= 'exec master..xp_cmdshell ''type '+@data_file+' >> "'+@file_name+'"'''
exec(@sql)

--Delete dummy file 
set @sql= 'exec master..xp_cmdshell ''del '+@data_file+''''
exec(@sql)

Po utworzenie procedury, wykonanie jej poprzez podanie nazwy bazy danych, nazwy tabeli i ścieżki do pliku:

EXEC proc_generate_excel_with_columns 'your dbname', 'your table name','your file path'

Its a whomping 29 pages ale to dlatego, że inni pokazują różne inne sposoby, jak również ludzie zadają pytania, jak to zrobić.

[9]}Śledź ten wątek całkowicie i spójrz na różne pytania zadawane przez ludzi i jak są one rozwiązywane. Zebrałem sporą wiedzę po prostu ją skimping i użyłem jej części, aby uzyskać oczekiwane wyniki.

Aby zaktualizować pojedyncze komórki

A member also there Peter Larson posts the following: Myślę, że jednej rzeczy tu brakuje. Świetnie jest móc eksportować i importować do plików Excel, ale co powiesz na aktualizację pojedynczych komórek? Albo szereg komórek?

To jest zasada, jak sobie z tym radzisz

update OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=c:\test.xls;hdr=no', 
'SELECT * FROM [Sheet1$b7:b7]') set f1 = -99

Możesz również dodawać formuły do programu Excel, używając tego:

update OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=c:\test.xls;hdr=no', 
'SELECT * FROM [Sheet1$b7:b7]') set f1 = '=a7+c7'

Eksport z nazwami kolumn za pomocą T-SQL

Członek Mladen Prajdic ma również wpis na blogu o tym, jak to zrobić tutaj

Bibliografia: www.sqlteam.com (btw jest to doskonały blog / forum dla każdego, kto chce uzyskać więcej z SQL Server).

 12
Author: JonH,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:25

Jeśli szukasz przedmiotów ad-hoc, a nie czegoś, co umieściłbyś w SSIS. Z poziomu SSMS po prostu podświetl siatkę wyników, skopiuj, a następnie wklej do Excela, nie jest elegancki, ale działa. Następnie możesz zapisać jako natywny .xls zamiast .csv

 5
Author: Mitchel Sellers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 21:21:30

Oto film, który pokaże Ci krok po kroku, jak eksportować dane do Excela. To świetne rozwiązanie dla "jednorazowych" problemów, w których musisz eksportować do Excela:
raportowanie Ad Hoc

 5
Author: Michael K. Campbell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 22:07:36

O wiele łatwiej jest to zrobić z poziomu Excela.!! Otwórz Excel Dane>Import/Eksport Danych>Import Danych Obok nazwy pliku kliknij przycisk "Nowe źródło" Na powitanie w Kreatorze połączeń danych wybierz Microsoft SQL Server. Kliknij Dalej. Wprowadź nazwę serwera i dane uwierzytelniające. Z listy rozwijanej wybierz bazę danych zawierającą potrzebną tabelę. Wybierz swój stolik, a następnie następny..... Wprowadź Opis, Jeśli chcesz i kliknij Zakończ. Po zakończeniu i z powrotem w programie Excel, po prostu kliknij " OK" Spokojnie.

 3
Author: Bill Anderson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-15 21:51:16

Utwórz źródło danych excel i wstaw wartości,

insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=D:\testing.xls;', 
'SELECT * FROM [SheetName$]') select * from SQLServerTable

Więcej informacji można znaleźć tutaj http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926

 2
Author: Prathap,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-15 09:05:58

Zawsze możesz użyć ADO, aby zapisać wyniki do komórek arkusza roboczego z obiektu recordset

 1
Author: Russ Cam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-18 12:24:44

Poręczne narzędzie Konwersja SQL do Excel konwertuje tabelę SQL lub wynik zapytania SQL do pliku Excel bez programowania.

Główne Cechy - Konwersja / eksport tabeli SQL do pliku Excel - Konwertuj / Eksportuj wiele tabel (wiele wyników zapytań) do wielu arkuszy Excel. - Zezwalaj na elastyczne zapytanie TSQL, które może zawierać wiele instrukcji SELECT lub innych złożonych zapytań.

B. Pozdrawiam, Alex

 1
Author: Alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-18 17:19:51

Istnieje kilka narzędzi do eksportu/importu z SQL Server do Excela.

Google to twój przyjaciel: -)

Używamy DbTransfer (który jest jednym z tych, które mogą eksportować pełną bazę danych do pliku Excel również) tutaj: http://www.dbtransfer.de/Products/DbTransfer .

Używaliśmy wcześniej funkcji openrowset w sql server, ale nigdy nie byłem z niej zadowolony, ponieważ nie jest zbyt łatwy w użyciu i brakuje jej funkcji i szybkości...

 1
Author: Michael Geller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-08 14:44:21

Wypróbuj narzędzie 'Import i eksport danych (32-bit)'. Dostępne po zainstalowaniu MS SQL Management Studio Express 2012.

Za pomocą tego narzędzia bardzo łatwo jest wybrać bazę danych, tabelę lub wstawić własne zapytanie SQL i wybrać miejsce docelowe (na przykład plik MS Excel).

 0
Author: Dennis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-19 11:00:26

Możesz kliknąć prawym przyciskiem myszy na siatce wyników w SQL server i wybrać Zapisz jako CSV. następnie możesz zaimportować to do Excela.

Excel daje Kreator importu, upewnij się, że wybierzesz rozdzielane przecinkami. działa dobrze dla mnie, gdy musiałem zaimportować rekordy 50k + do Excela.

 -1
Author: JGilmartin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-14 10:54:10

Sprawdź to.

Query -> Query Options.

Results -> Grid -> Include column headers when copying or saving the results
 -1
Author: oğuzhan cengiz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-07 16:23:29