sql >> Databáze >  >> RDS >> Sqlserver

T-SQL:Export do nového souboru Excel

Toto je zdaleka nejlepší příspěvek pro export do Excelu z SQL:

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

Cituji od uživatele madhivanan ,

Kromě použití DTS a Průvodce exportem můžeme tento dotaz použít také k exportu dat z SQL Server2000 do Excelu

Vytvořte soubor aplikace Excel s názvem testing se záhlavími stejnými jako záhlaví sloupců tabulky a použijte tyto dotazy

1 Exportujte data do existujícího souboru EXCEL z tabulky SQL Server

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

2 Exportujte data z Excelu do nové SQL Server tabulky

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

3 Exportujte data z Excelu do existující tabulky SQL Serveru (upraveno)

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

4 Pokud nechcete soubor EXCEL vytvářet předem a chcete do něj exportovat data, použijte

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

(Nyní můžete najít soubor s daty v tabulkovém formátu)

5 Chcete-li exportovat data do nového souboru EXCEL s nadpisem (názvy sloupců), vytvořte následující postup

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 
    [email protected]_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 '[email protected]+') as t" queryout "'[email protected]_name+'" -c'''
exec(@sql)

--Generate data in the dummy file
set @sql='exec master..xp_cmdshell ''bcp "select * from '[email protected]_name+'..'[email protected]_name+'" queryout "'[email protected]_file+'" -c'''
exec(@sql)

--Copy dummy file to passed EXCEL file
set @sql= 'exec master..xp_cmdshell ''type '[email protected]_file+' >> "'[email protected]_name+'"'''
exec(@sql)

--Delete dummy file 
set @sql= 'exec master..xp_cmdshell ''del '[email protected]_file+''''
exec(@sql)

Po vytvoření proceduru spusťte zadáním názvu databáze, názvu tabulky a cesty k souboru:

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

Je to neuvěřitelných 29 stránek, ale to je proto, že ostatní ukazují různé jiné způsoby, stejně jako lidé, kteří kladou otázky, jako je tento, jak to udělat.

Sledujte celé toto vlákno a podívejte se na různé otázky, které lidé položili, a na to, jak byly vyřešeny. Nasbíral jsem docela dost znalostí pouhým letmým procházením a části z nich jsem použil k dosažení očekávaných výsledků.

Aktualizace jednotlivých buněk

Také tamní člen Peter Larson uvádí následující:Myslím, že zde chybí jedna věc. Je skvělé, že můžete exportovat a importovat soubory aplikace Excel, ale co takhle aktualizovat jednotlivé buňky? Nebo rozsah buněk?

Toto je princip, jak to zvládnete

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

Vzorce můžete do Excelu přidat také pomocí tohoto:

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'

Export s názvy sloupců pomocí T-SQL

Člen Mladen Prajdic má také příspěvek na blogu o tom, jak to udělat zde

Reference:www.sqlteam.com (mimochodem toto je vynikající blog/fórum pro každého, kdo chce získat více z SQL Serveru). Pro odkazování na chyby jsem použil toto

Chyby, které se mohou vyskytnout

Pokud se zobrazí následující chyba:

Potom spusťte toto:

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO


  1. MySQL NET Connect 6.7.2 ve Visual Studiu 2012

  2. Nastavení NLS_LANG pro tenký ovladač JDBC?

  3. Chyba Postgres po aktualizaci TimescaleDB na Ubuntu:soubor nenalezen

  4. výběr dat z tabulky na základě data