Dette er langt det bedste indlæg til at eksportere til Excel fra SQL:
http://www.sqlteam.com/forums/topic.asp?TOPIC_ID =49926
At citere fra bruger madhivanan
,
Udover at bruge DTS og Export wizard, kan vi også bruge denne forespørgsel til at eksportere data fra SQL Server2000 til Excel
Opret en Excel-fil med navnet testing med samme overskrifter som tabelkolonner, og brug disse forespørgsler
1 Eksporter data til eksisterende EXCEL-fil fra SQL Server-tabel
insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=D:\testing.xls;',
'SELECT * FROM [SheetName$]') select * from SQLServerTable
2 Eksporter data fra Excel til ny SQL Server-tabel
select *
into SQLServerTable FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=D:\testing.xls;HDR=YES',
'SELECT * FROM [Sheet1$]')
3 Eksporter data fra Excel til eksisterende SQL Server-tabel (redigeret)
Insert into SQLServerTable Select * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=D:\testing.xls;HDR=YES',
'SELECT * FROM [SheetName$]')
4 Hvis du ikke ønsker at oprette en EXCEL-fil på forhånd og vil eksportere data til den, skal du bruge
EXEC sp_makewebtask
@outputfile = 'd:\testing.xls',
@query = 'Select * from Database_name..SQLServerTable',
@colheaders =1,
@FixedFont=0,@lastupdated=0,@resultstitle='Testing details'
(Nu kan du finde filen med data i tabelformat)
5 For at eksportere data til en ny EXCEL-fil med overskrift (kolonnenavne), skal du oprette følgende procedure
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)
Når du har oprettet proceduren, skal du udføre den ved at angive databasenavn, tabelnavn og filsti:
EXEC proc_generate_excel_with_columns 'your dbname', 'your table name','your file path'
Det er hele 29 sider, men det er fordi andre viser forskellige andre måder såvel som folk stiller spørgsmål som denne om, hvordan man gør det.
Følg hele tråden og se på de forskellige spørgsmål, folk har stillet, og hvordan de løses. Jeg opsamlede en del viden ved at skimme det og har brugt dele af det til at få forventede resultater.
For at opdatere enkelte celler
Et medlem der også Peter Larson skriver følgende:Jeg synes, der mangler en ting her. Det er fantastisk at kunne eksportere og importere til Excel-filer, men hvad med at opdatere enkelte celler? Eller en række celler?
Dette er princippet om, hvordan du klarer det
update OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=c:\test.xls;hdr=no',
'SELECT * FROM [Sheet1$b7:b7]') set f1 = -99
Du kan også tilføje formler til Excel ved at bruge denne:
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 med kolonnenavne ved hjælp af T-SQL
Medlemmet Mladen Prajdic har også et blogindlæg om, hvordan man gør dette her
Referencer:www.sqlteam.com (btw dette er en fremragende blog / forum for alle, der ønsker at få mere ud af SQL Server). Til fejlhenvisning brugte jeg dette
Fejl, der kan opstå
Hvis du får følgende fejlmeddelelse:
Kør derefter dette:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO