Bu SQL excel ihracat için çok iyi postayla geçerli:
http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926" rel="nofollow - Kullanicidan alinti madhivanan
,
Disinda DTS ve Ihracat sihirbazini kullanarak, biz de Excel'e SQL Server2000 verileri aktarmak için bu sorgu kullanabilirsiniz
Tablo sütunlarinin ayni basliklarini sahip bir Excel dosyasi adli test olusturma ve bu sorgulari kullanmak
SQL Server tablosundaki mevcut EXCEL dosyasina 1 Ihracat verileri
insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=D:\testing.xls;',
'SELECT * FROM [SheetName$]') select * from SQLServerTable
Yeni SQL Server tablosuna Excel 2 Ihracat verileri
select *
into SQLServerTable FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=D:\testing.xls;HDR=YES',
'SELECT * FROM [Sheet1$]')
varolan bir SQL Server tablosuna Excel 3 Ihracat verileri (düzenlenmis)
Insert into SQLServerTable Select * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=D:\testing.xls;HDR=YES',
'SELECT * FROM [SheetName$]')
4 önceden bir EXCEL dosyasi olusturun ve içine veri vermek istediginiz istemiyorsaniz, kullanim
EXEC sp_makewebtask
@outputfile = 'd:\testing.xls',
@query = 'Select * from Database_name..SQLServerTable',
@colheaders =1,
@FixedFont=0,@lastupdated=0,@resultstitle='Testing details'
(Simdi tablo formatinda veri ile dosyayi bulabilirsiniz)
basligi (sütun adlari) dosyasini yeni EXCEL ihracat verileri için 5, asagidaki yordami olusturmak
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)
prosedürü olusturduktan sonra, veritabani adi, tablo adi ve dosya yolu saglayarak çalistirmak:
EXEC proc_generate_excel_with_columns 'your dbname', 'your table name','your file path'
Onun 29 sayfalari ama digerleri sadece bunu yapmak için nasil bu gibi sorular sorarak çesitli baska yollar yani sira insanlara göstermek için oldugunu Whomping.
Bu konuyu tamamen izleyin ve insanlar istediler çesitli sorular bakmak ve nasil çözülür. Ben bilginin sadece kaymagini biraz aldi ve beklenen sonuçlari almak için o kisimlarini kullandik.
tek hücre güncellemek için
Bir üye de orada Peter Larson asagidaki nakleder: Ben bir sey burada eksik oldugunu düsünüyorum.Excel dosyalari Ihracat ve Ithalat edebilmek için harika, ama nasil tek hücre güncellemeyle ilgili? Ya da hücre araligi?
Bu o yönetmek nasil ilkesi
update OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=c:\test.xls;hdr=no',
'SELECT * FROM [Sheet1$b7:b7]') set f1 = -99
Ayrica bu kullanarak Excel formülleri ekleyebilirsiniz:
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'
T-SQL kullanarak sütun adlari ile Ihracat
Üye Mladen Prajdic de bunu nasil bir blog girisi vardir http://weblogs.sqlteam.com/mladenp/archive/2006/07/25/10771.aspx" rel="nofollow - Kaynaklar: http://www.sqlteam.com/" rel="nofollow - (btw bu SQL Server daha almak isteyen herkes için mükemmel bir blog / forum). Hata referans için ben kullanilan http://blog.sqlauthority.com/2010/11/03/sql-server-fix-error-ms-jet-oledb-4-0-cannot-be-used-for-distributed-queries-because-the-provider-is-used-to-run-in-apartment-mode/" rel="nofollow - olusabilecek hatalarasagidaki hatayi alirsaniz:
OLE DB Saglayicisi 'Microsoft.Jet.OLEDB.4.0' dagitilmis sorgular için kullanilamaz
O zaman bu çalistirin:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO