国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > SQL Server > 正文

SQL Server 與 Excel

2024-08-31 00:47:58
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

/*
存儲(chǔ)過(guò)程名稱:導(dǎo)出數(shù)據(jù)到excel
功能描述:導(dǎo)出數(shù)據(jù)到excel

exec exporttoexcel @server = '.',
                   @uname = 'sa',
                   @pwd = '',
                   @querytext = 'select * from dldata..bbbbbb',
                   @filename = 'd:/importtoexcel.xls'
*/

if object_id('exporttoexcel') is not null drop proc exporttoexcel
go

create procedure exporttoexcel (
  @server sysname = null,
  @uname sysname = null,
  @pwd sysname = null,
  @querytext varchar(200) = null,
  @filename varchar(200) = 'd:/importtoexcel.xls'
)
as
declare @sqlserver int, --sqldmo.sqlserver對(duì)象
        @queryresults int, --queryresults對(duì)象
        @currentresultset int,
        @object int, --excel.application對(duì)象
        @workbooks int,
        @workbook int,
        @range int,
        @hr int,
        @columns int,
        @rows int,
        @indcolumn int,
        @indrow int,
        @off_column int,
        @off_row int,
        @code_str varchar(100),
        @result_str varchar(255)

if @querytext is null
begin
   print 'set the query string'
   return
end

--設(shè)置服務(wù)器名為本地服務(wù)器(@@servername返回運(yùn)行sql server的本地服務(wù)器名稱)
if @server is null select @server = @@servername

--設(shè)置用戶名為當(dāng)前系統(tǒng)用戶名(使用system_user返回當(dāng)前系統(tǒng)用戶名)
if @uname is null select @uname = system_user

set nocount on

--創(chuàng)建sqldmo.sqlserver對(duì)象
exec @hr = sp_oacreate 'sqldmo.sqlserver', @sqlserver out
if @hr <> 0
begin
   print 'error create sqldmo.sqlserver'
   return
end

--連接到sql server系統(tǒng)
if @pwd is null
begin
   exec @hr = sp_oamethod @sqlserver, 'connect', null, @server, @uname
   if @hr <> 0
   begin
      print 'error connect'
      return
   end
end
else
begin
   exec @hr = sp_oamethod @sqlserver, 'connect', null, @server, @uname, @pwd
   if @hr <> 0
   begin
      print 'error connect'
      return
   end
end

--the executewithresults method executes a transact-sql command batch
--returning batch result sets in a queryresults object
select @result_str = 'executewithresults("' + @querytext + '")'
exec @hr = sp_oamethod @sqlserver, @result_str, @queryresults out
if @hr <> 0
begin
    print 'error with method executewithresults'
    return
end

--the currentresultset property controls access to the result sets of a queryresults object
exec @hr = sp_oamethod @queryresults, 'currentresultset', @currentresultset out
if @hr <> 0
begin
   print 'error get currentresultset'
   return
end

--the columns property exposes the number of columns contained
--in the current result set of a queryresults object
exec @hr = sp_oamethod @queryresults, 'columns', @columns out
if @hr <> 0
begin
   print 'error get columns'
   return
end

--the rows property returns the number of rows in a referenced
--query result set or the number of rows existing in a table
exec @hr = sp_oamethod @queryresults, 'rows', @rows out
if @hr <> 0
begin
   print 'error get rows'
   return
end

--創(chuàng)建excel.application對(duì)象
exec @hr = sp_oacreate 'excel.application', @object out
if @hr <> 0
begin
   print 'error create excel.application'
   return
end

--獲得excel工作簿對(duì)象
exec @hr = sp_oagetproperty @object, 'workbooks', @workbooks out
if @hr <> 0
begin
   print 'error create workbooks'
   return
end

--在工作簿對(duì)象中加入一工作表
exec @hr = sp_oagetproperty @workbooks, 'add', @workbook out
if @hr <> 0
begin
   print 'error with method add'
   return
end

--range對(duì)象(a1單元格)
exec @hr = sp_oagetproperty @object, 'range("a1")', @range out
if @hr <> 0
begin
   print 'error create range'
   return
end

select @indrow = 1
select @off_row = 0
select @off_column = 1

while (@indrow <= @rows)
begin
   select @indcolumn = 1
   while (@indcolumn <= @columns)
   begin
      --the getcolumnstring method returns a queryresults object result set member converted to a string value
      exec @hr = sp_oamethod @queryresults, 'getcolumnstring', @result_str out, @indrow, @indcolumn
      if @hr <> 0
      begin
         print 'error get getcolumnstring'
         return
      end

      exec @hr = sp_oasetproperty @range, 'value', @result_str
      if @hr <> 0
      begin
         print 'error set value'
         return
      end

      exec @hr = sp_oagetproperty @range, 'offset', @range out, @off_row, @off_column
      if @hr <> 0
      begin
         print 'error get offset'

         return
      end

      select @indcolumn = @indcolumn + 1

   end

   select @indrow = @indrow + 1
   select @code_str = 'range("a' + ltrim(str(@indrow)) + '")'
   exec @hr = sp_oagetproperty @object, @code_str, @range out
   if @hr <> 0
   begin
      print 'error create range'
      return
   end

end

select @result_str = 'exec master..xp_cmdshell ''del ' + @filename + ''', no_output'
exec(@result_str) --如果存在@filename文件,則先刪除
select @result_str = 'saveas("' + @filename + '")'
exec @hr = sp_oamethod @workbook, @result_str
if @hr <> 0
begin
    print 'error with method saveas'
    return
end

exec @hr = sp_oamethod @workbook, 'close'
if @hr <> 0
begin
    print 'error with method close'
    return
end

exec @hr = sp_oadestroy @object
if @hr <> 0
begin
    print 'error destroy excel.application'
    return
end

exec @hr = sp_oadestroy @sqlserver
if @hr <> 0
begin
    print 'error destroy sqldmo.sqlserver'
    return
end
go

 


收集最實(shí)用的網(wǎng)頁(yè)特效代碼!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 花垣县| 丹凤县| 永仁县| 崇礼县| 濮阳县| 西乌珠穆沁旗| 增城市| 梧州市| 吉首市| 宜良县| 元朗区| 陵水| 静宁县| 澎湖县| 吉安县| 德庆县| 广西| 昔阳县| 隆昌县| 闸北区| 马龙县| 文水县| 东兰县| 大同县| 西昌市| 塔河县| 万盛区| 沙湾县| 沈阳市| 大宁县| 东台市| 邹平县| 泸溪县| 永春县| 蒙城县| 牙克石市| 溧阳市| 安宁市| 和田市| 七台河市| 大悟县|