自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL Server 帶列名導(dǎo)出到excel的實(shí)際操作

數(shù)據(jù)庫(kù) SQL Server
我們今天主要描述的是SQL Server 帶列名導(dǎo)出到excel的實(shí)際操過(guò)程,我們是用sql語(yǔ)句來(lái)實(shí)現(xiàn)其存儲(chǔ)過(guò)程,以下就是文章的主要內(nèi)容描述。

文章主要描述的是SQL Server 帶列名導(dǎo)出到excel的實(shí)際操過(guò)程,以及在其實(shí)際操作中的值得我們大家注意的事項(xiàng)與其實(shí)際應(yīng)用代碼的描述,以下就是文章的主要內(nèi)容的詳細(xì)描述,望大家在瀏覽之后會(huì)對(duì)其有更深的了解。

sql語(yǔ)句就用下面的存儲(chǔ)過(guò)程

 

數(shù)據(jù)SQL Server 帶列名導(dǎo)出Excel

導(dǎo)出查詢(xún)中的數(shù)據(jù)到Excel,包含字段名,文件為真正的Excel文件

,如果文件不存在,將自動(dòng)創(chuàng)建文件

 

,如果表不存在,將自動(dòng)創(chuàng)建表

 

基于通用性考慮,僅支持SQL Server 帶列名導(dǎo)出標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型

 

鄒建 2003.10*/

 

調(diào)用示例

p_exporttb @sqlstr='select * from 地區(qū)資料'

,@path='c:',@fname='aa.xls',@sheetname='地區(qū)資料'

 

  1. */  
  2. if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_exporttb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)  
  3. drop procedure [dbo].[p_exporttb]  
  4. GO 

create proc p_exporttb

@sqlstr sysname, 查詢(xún)語(yǔ)句,如果查詢(xún)語(yǔ)句中使用了order by ,請(qǐng)加上top 100 percent

 

@path nvarchar(1000), 文件存放目錄

 

@fname nvarchar(250), 文件名

 

@sheetname varchar(250)='' 要?jiǎng)?chuàng)建的工作表名,默認(rèn)為文件名

 

  1. as   
  2. declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int  
  3. declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000) 

參數(shù)檢測(cè)

  1. if isnull(@fname,'')='' set @fname='temp.xls' 
  2. if isnull(@sheetname,'')='' set @sheetname=replace(@fname,'.','#') 

 

SQL Server 帶列名導(dǎo)出至excel,檢查文件是否已經(jīng)存在

  1. if right(@path,1)<>'' set @path=@path+''  
  2. create table #tb(a bit,b bit,c bit)  
  3. set @sql=@path+@fname  
  4. insert into #tb exec master..xp_fileexist @sql 

數(shù)據(jù)庫(kù)創(chuàng)建語(yǔ)句

  1. set @sql=@path+@fname  
  2. if exists(select 1 from #tb where a=1)  
  3. set @constr='DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';READONLY=FALSE' 
  4. +';CREATE_DB="'+@sql+'";DBQ='+@sql  
  5. else  
  6. set @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 5.0;HDR=YES' 
  7. +';DATABASE='+@sql+'"' 

連接數(shù)據(jù)庫(kù)

  1. exec @err=sp_oacreate 'adodb.connection',@obj out  
  2. if @err<>0 goto lberr  
  3. exec @err=sp_oamethod @obj,'open',null,@constr  
  4. if @err<>0 goto lberr  

 

創(chuàng)建表的SQL

  1. declare @tbname sysname  
  2. set @tbname='##tmp_'+convert(varchar(38),newid())  
  3. set @sql='select * into ['+@tbname+'] from('+@sqlstr+') a'  
  4. exec(@sql)  
  5.  
  6. select @sql='',@fdlist='' 
  7. select @fdlist=@fdlist+','+a.name  
  8. ,@sql=@sql+',['+a.name+'] '  
  9. +case when b.name in('char','nchar','varchar','nvarchar') then  
  10. 'text('+cast(case when a.length>255 then 255 else a.length end as varchar)+')'  
  11. when b.name in('tynyint','int','bigint','tinyint') then 'int'  
  12. when b.name in('smalldatetime','datetime') then 'datetime'  
  13. when b.name in('money','smallmoney') then 'money'  
  14. else b.name end  
  15. FROM tempdb..syscolumns a left join tempdb..systypes b on a.xtype=b.xusertype  
  16. where b.name not in('image','text','uniqueidentifier','sql_variant','ntext','varbinary','binary','timestamp')  
  17. and a.id=(select id from tempdb..sysobjects where name=@tbname)  
  18. select @sql='create table ['+@sheetname  
  19. +']('+substring(@sql,2,8000)+')'  
  20. ,@fdlist=substring(@fdlist,2,8000)  
  21. exec @err=sp_oamethod @obj,'execute',@out out,@sql  
  22. if @err<>0 goto lberr  
  23. exec @err=sp_oadestroy @obj  

 

導(dǎo)入數(shù)據(jù)

  1. set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 5.0;HDR=YES 
  2. ;DATABASE='+@path+@fname+''',['+@sheetname+' $])'  
  3. exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from ['+@tbname+']')  
  4. set @sql='drop table ['+@tbname+']'  
  5. exec(@sql)  
  6. return  
  7. lberr:  
  8. exec sp_oageterrorinfo 0,@src out,@desc out  
  9. lbexit:  

 

select cast(@err as varbinary(4)) as 錯(cuò)誤號(hào)

 

,@src as 錯(cuò)誤源,@desc as 錯(cuò)誤描述

 

select @sql,@constr,@fdlist

以上的相關(guān)內(nèi)容就是對(duì)

SQL Server 帶列名導(dǎo)出至excel的介紹,望你能有所收獲。

【編輯推薦】

  1. MS-SQL server數(shù)據(jù)庫(kù)開(kāi)發(fā)中的技巧
  2. SQL Server里調(diào)用COM組件的操作流程
  3. 配置Tomcat+SQL Server2000連接池流程
  4. SQL Server Model增加一些變化,很簡(jiǎn)單!
  5. 易混淆的SQL Server數(shù)據(jù)類(lèi)型列舉


 

責(zé)任編輯:佚名 來(lái)源: 網(wǎng)絡(luò)轉(zhuǎn)載
相關(guān)推薦

2010-07-23 09:25:50

SQL Server導(dǎo)

2010-07-07 11:03:21

SQL Server索

2010-07-21 15:22:07

2010-06-28 12:39:14

SQL Server數(shù)

2010-07-16 11:10:52

SQL server

2010-06-28 12:27:35

SQL Server

2010-07-12 10:13:44

SQL Server表

2010-07-05 12:21:57

SQL Server記

2010-07-06 09:20:30

SQL Server查

2010-06-30 17:56:06

2010-06-17 12:26:51

SQL Server索

2010-06-28 13:27:33

SQL Server視

2010-06-18 08:30:48

SQL Server

2010-07-21 09:28:34

SQL Server

2010-07-09 12:49:41

SQL Server自

2010-07-05 10:15:40

SQL Server

2010-04-16 17:17:31

Oracle訪問(wèn)

2010-07-20 11:13:09

SQL Server日

2010-07-23 14:26:37

SQL Server存

2010-07-02 11:10:56

SQL Server
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)