狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

[點晴永久免費OA]導出EXCEL的存儲過程

Ccoffee
2018年11月16日 9:2 本文熱度 3886

IF OBJECT_ID(''dbo.Proc_DBA_ExportExcel'') IS NOT NULL
 DROP PROC dbo.Proc_DBA_ExportExcel 
GO
CREATE  PROC dbo.Proc_DBA_ExportExcel 
 @sqlstr varchar(8000),--查詢語句,如果查詢語句中使用了order by ,請加上top 100 percent 
 @path nvarchar(1000),--文件存放目錄 
 @fname nvarchar(250),--文件名 
 @sheetname varchar(250)=''''--要創建的工作表名,默認為文件名 
AS
BEGIN
 declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int 
 declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000) 
  
 --參數檢測 
 if isnull(@fname,'''')=''''set @fname=''temp2012.xls'' 
 if isnull(@sheetname,'''')='''' set @sheetname=replace(@fname,''.'',''#'') 
  
 --檢查文件是否已經存在 
 if right(@path,1)<>''\'' set @path=@path+''\'' 
 create table #tb(a bit,b bit,c bit) 
 set @sql=@path+@fname 
 insert into #tb exec master..xp_fileexist @sql 
  
 --數據庫創建語句 
 set @sql=@path+@fname 
 if exists(select 1 from #tb where a=1) 
 set @constr=''DRIVER={Microsoft Excel Driver (*.xlsx)};DSN='''''''';READONLY=FALSE'' 
 +'';CREATE_DB="''+@sql+''";DBQ=''+@sql 
 else 
 set @constr=''Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties="Excel 8.0;HDR=YES'' 
 +'';DATABASE=''+@sql+''"'' 
  
 --連接數據庫 
 exec @err=sp_oacreate ''adodb.connection'',@obj out 
 if @err<>0 goto lberr 
  
 exec @err=sp_oamethod @obj,''open'',null,@constr 
 if @err<>0 goto lberr 
  
 --創建表的SQL 
 declare @tbname sysname 
 set @tbname=''##tmp_''+convert(varchar(38),newid()) 
 set @sql=''select * into [''+@tbname+''] from(''+@sqlstr+'') a'' 
 exec(@sql) 
  
 select @sql='''',@fdlist='''' 
 select @fdlist=@fdlist+'',[''+a.name+'']'' 
 ,@sql=@sql+'',[''+a.name+''] '' 
 +case 
 when b.name like ''%char'' 
 then case when a.length>255 then ''memo'' 
 else ''text(''+cast(a.length as varchar)+'')'' end 
 when b.name like ''%int'' or b.name=''bit'' then ''int'' 
 when b.name like ''%datetime'' then ''datetime'' 
 when b.name like ''%money'' then ''money'' 
 when b.name like ''%text'' then ''memo'' 
 else b.name end 
 FROM tempdb..syscolumns a left join tempdb..systypes b on a.xtype=b.xusertype 
 where b.name not in(''image'',''uniqueidentifier'',''sql_variant'',''varbinary'',''binary'',''timestamp'') 
 and a.id=(select id from tempdb..sysobjects where name=@tbname) 
  
 if @@rowcount=0 return 
  
 select @sql=''create table [''+@sheetname 
 +''](''+substring(@sql,2,8000)+'')'' 
 ,@fdlist=substring(@fdlist,2,8000) 
  
 exec @err=sp_oamethod @obj,''execute'',@out out,@sql 
 if @err<>0 goto lberr 
  
 exec @err=sp_oadestroy @obj 
  
 --導入數據 
 set @sql=''openrowset(''''Microsoft.ACE.OLEDB.12.0'''',''''Excel 8.0;HDR=YES 
 ;DATABASE=''+@path+@fname+'''''',[''+@sheetname+''$])'' 
  
 exec(''insert into ''+@sql+''(''+@fdlist+'') select ''+@fdlist+'' from [''+@tbname+'']'') 
  
 set @sql=''drop table [''+@tbname+'']'' 
 exec(@sql) 
 return 
  
 lberr: 
 exec sp_oageterrorinfo 0,@src out,@desc out 
 lbexit: 
 select cast(@err as varbinary(4)) as 錯誤號 
 ,@src as 錯誤源,@desc as 錯誤描述 
 select @sql,@constr,@fdlist 
END
GO

使用:
sp_configure ''Ole Automation Procedures'', ''1''
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC dbo.Proc_DBA_ExportExcel
 @sqlstr=''SELECT * FROM [master].dbo.spt_values AS sv''
 ,@path=''d:\''
 ,@fname=''test.xlsx''
 ,@sheetname=''測試''
GO
sp_configure ''Ole Automation Procedures'', ''0''
GO
RECONFIGURE WITH OVERRIDE
GO


該文章在 2018/11/16 10:40:37 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved