大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 数据库 -> 其他相关 -> 导出数据到Excel概述

导出数据到Excel概述

时间: 2021-08-13 作者:daque

  this stored procedure can be used to insert the result set of theparticular select statement into excel file (c:\importtoexcel.xls,by default).you can pass the server name, user name, user password, the selectstatement to execute, and the file name to store the results set,as in the example below: exec exporttoexcel @server = '.',                   @uname = 'sa',                   @querytext = 'select au_fname from pubs..authors',                   @filename = 'c:\importtoexcel.xls'

/*version: sql server 7.0/2000created by: alexander chigrik- all about ms sql(sql server articles, faq, scripts, tips and test exams).

this stored procedure can be used to insert the result set of theparticular select statement into excel file (c:\importtoexcel.xls,by default).you can pass the server name, user name, user password, the selectstatement to execute, and the file name to store the results set,as in the example below:

exec exporttoexcel @server = '.',                   @uname = 'sa',                   @querytext = 'select au_fname from pubs..authors',                   @filename = 'c:\importtoexcel.xls'*/

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

create procedure exporttoexcel (  @server sysname = null,  @uname sysname = null,  @pwd sysname = null,  @querytext varchar(200) = null,  @filename varchar(200) = 'c:\importtoexcel.xls')asdeclare @sqlserver int,        @queryresults int,        @currentresultset int,        @object int,        @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

-- sets the server to the local serverif @server is null select @server = @@servername

-- sets the username to the current user nameif @uname is null select @uname = system_user

set nocount on

exec @hr = sp_oacreate 'sqldmo.sqlserver', @sqlserver outif @hr <> 0begin    print 'error create sqldmo.sqlserver'    returnend

--  connect to the sql serverif @pwd is null  begin    exec @hr = sp_oamethod @sqlserver, 'connect', null, @server, @uname    if @hr <> 0       begin         print 'error connect'         return       end  endelse  begin    exec @hr = sp_oamethod @sqlserver, 'connect', null, @server, @uname, @pwd    if @hr <> 0      begin        print 'error connect'        return      end  end

select @result_str = 'executewithresults("' + @querytext + '")'exec @hr = sp_oamethod @sqlserver, @result_str, @queryresults outif @hr <> 0begin    print 'error with method executewithresults'    returnend

exec @hr = sp_oamethod @queryresults, 'currentresultset', @currentresultset outif @hr <> 0begin    print 'error get currentresultset'    returnend

exec @hr = sp_oamethod @queryresults, 'columns', @columns outif @hr <> 0begin    print 'error get columns'    returnend

exec @hr = sp_oamethod @queryresults, 'rows', @rows outif @hr <> 0begin    print 'error get rows'    returnend

exec @hr = sp_oacreate 'excel.application', @object outif @hr <> 0begin    print 'error create excel.application'    returnend

exec @hr = sp_oagetproperty @object, 'workbooks', @workbooks outif @hr <> 0begin    print 'error create workbooks'    returnend

exec @hr = sp_oagetproperty @workbooks, 'add', @workbook outif @hr <> 0begin    print 'error with method add'    returnend

exec @hr = sp_oagetproperty @object, 'range("a1")', @range outif @hr <> 0begin    print 'error create range'    returnend

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

while (@indrow <= @rows)beginselect @indcolumn = 1

while (@indcolumn <= @columns)begin

exec @hr = sp_oamethod @queryresults, 'getcolumnstring', @result_str out, @indrow, @indcolumnif @hr <> 0begin    print 'error get getcolumnstring'    returnend

exec @hr = sp_oasetproperty @range, 'value', @result_strif @hr <> 0begin    print 'error set value'    returnend

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

select @indcolumn = @indcolumn + 1

end

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

end

select @result_str = 'exec master..xp_cmdshell ''del ' + @filename + ''', no_output'exec(@result_str)select @result_str = 'saveas("' + @filename + '")'exec @hr = sp_oamethod @workbook, @result_strif @hr <> 0begin    print 'error with method saveas'    returnend

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

exec @hr = sp_oadestroy @objectif @hr <> 0begin    print 'error destroy excel.application'    returnend

exec @hr = sp_oadestroy @sqlserverif @hr <> 0begin    print 'error destroy sqldmo.sqlserver'    returnendgo

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.