SQL导出为Excel表
发布时间:2020-12-31 01:42:58 所属栏目:编程 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 Version: SQL Server 7.0/2000Created by: Alexander Chigrikhttp://www.MSSQLCity.com/ - all about MS SQL(SQL Server Articles,FAQ,Scripts,Tips a
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 Version: SQL Server 7.0/2000 Created by: Alexander Chigrik http://www.MSSQLCity.com/ - 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 the particular select statement into Excel file (c:ImportToExcel.xls,by default). You can pass the server name,user name,user password,the select statement 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/2000 Created by: Alexander Chigrik http://www.MSSQLCity.com/ - all about MS SQL (SQL Server Articles,Tips and Test Exams). This stored procedure can be used to insert the result set of the particular select statement into Excel file (c:ImportToExcel.xls,@filename = 'c: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) = 'c:ImportToExcel.xls' ) AS DECLARE @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 server IF @server IS NULL SELECT @server = @@servername -- Sets the username to the current user name IF @uname IS NULL SELECT @uname = SYSTEM_USER SET NOCOUNT ON EXEC @hr = sp_OACreate 'SQLDMO.SQLServer',@SQLServer OUT IF @hr <> 0 BEGIN PRINT 'error create SQLDMO.SQLServer' RETURN END -- Connect to the SQL Server 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,@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 OUT IF @hr <> 0 BEGIN PRINT 'error with method ExecuteWithResults' RETURN END EXEC @hr = sp_OAMethod @QueryResults,'CurrentResultSet',@CurrentResultSet OUT IF @hr <> 0 BEGIN PRINT 'error get CurrentResultSet' RETURN END EXEC @hr = sp_OAMethod @QueryResults,'Columns',@Columns OUT IF @hr <> 0 BEGIN PRINT 'error get Columns' RETURN END EXEC @hr = sp_OAMethod @QueryResults,'Rows',@Rows OUT IF @hr <> 0 BEGIN PRINT 'error get Rows' RETURN END EXEC @hr = sp_OACreate 'Excel.Application',@object OUT IF @hr <> 0 BEGIN PRINT 'error create Excel.Application' RETURN END EXEC @hr = sp_OAGetProperty @object,'WorkBooks',@WorkBooks OUT IF @hr <> 0 BEGIN PRINT 'error create WorkBooks' RETURN END EXEC @hr = sp_OAGetProperty @WorkBooks,'Add',@WorkBook OUT IF @hr <> 0 BEGIN PRINT 'error with method Add' RETURN END 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 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) 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 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:广西网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐