电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

SQL Server導(dǎo)出表到EXCEL文件的存儲(chǔ)過(guò)程

瀏覽:105日期:2022-08-07 15:44:43

SQL Server導(dǎo)出表到EXCEL文件的存儲(chǔ)過(guò)程:

*--數(shù)據(jù)導(dǎo)出EXCEL

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

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

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

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

---*/

/**//*--調(diào)用示例

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

--*/

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_exporttb]') and

OBJECTPROPERTY(id, N'IsProcedure') = 1)

drop procedure [dbo].[p_exporttb]

GO

create proc p_exporttb

@tbname sysname, --要導(dǎo)出的表名,注意只能是表名/視圖名

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

@fname nvarchar(250)='' --文件名,默認(rèn)為表名

as

declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int

declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)

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

if isnull(@fname,'')='' set @fname=@tbname+'.xls'

--檢查文件是否已經(jīng)存在

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

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

set @sql=@path+@fname

if exists(select 1 from #tb where a=1)

set @constr='DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';READONLY=FALSE'

+';CREATE_DB=''+@sql+'';DBQ='+@sql

else

set @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 5.0;HDR=YES'

+';DATABASE='+@sql+'''

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

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

--創(chuàng)建表的SQL

select @sql='',@fdlist=''

select @fdlist=@fdlist+','+a.name

,@sql=@sql+',['+a.name+'] '

+case when b.name in('char','nchar','varchar','nvarchar') then

'text('+cast(case when a.length>255 then 255 else a.length end as varchar)+')'

when b.name in('tynyint','int','bigint','tinyint') then 'int'

when b.name in('smalldatetime','datetime') then 'datetime'

when b.name in('money','smallmoney') then 'money'

else b.name end

FROM syscolumns a left join systypes b on a.xtype=b.xusertype

where b.name not in

('image','text','uniqueidentifier','sql_variant','ntext','varbinary','binary','timestamp')

and object_id(@tbname)=id

select @sql='create table ['+@tbname

+']('+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

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

set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 5.0;HDR=YES

DATABASE='+@path+@fname+''',['+@tbname+'$])'

exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from '+@tbname)

return

lberr:

exec sp_oageterrorinfo 0,@src out,@desc out

lbexit:

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

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

select @sql,@constr,@fdlist

go

*--數(shù)據(jù)導(dǎo)出EXCEL

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

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

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

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

--*/

/**//*--調(diào)用示例

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

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

--*/

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_exporttb]') and

OBJECTPROPERTY(id, N'IsProcedure') = 1)

drop procedure [dbo].[p_exporttb]

GO

create proc p_exporttb

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

出表/視圖,用上面的存儲(chǔ)過(guò)程

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

@fname nvarchar(250), --文件名

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

as

declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int

declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)

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

if isnull(@fname,'')='' set @fname='temp.xls'

if isnull(@sheetname,'')='' set @sheetname=replace(@fname,'.','#')

--檢查文件是否已經(jīng)存在

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

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

set @sql=@path+@fname

if exists(select 1 from #tb where a=1)

set @constr='DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';READONLY=FALSE'

+';CREATE_DB=''+@sql+'';DBQ='+@sql

else

set @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 5.0;HDR=YES'

+';DATABASE='+@sql+'''

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

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

--創(chuàng)建表的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 in('char','nchar','varchar','nvarchar') then

'text('+cast(case when a.length>255 then 255 else a.length end as varchar)+')'

when b.name in('tynyint','int','bigint','tinyint') then 'int'

when b.name in('smalldatetime','datetime') then 'datetime'

when b.name in('money','smallmoney') then 'money'

else b.name end

FROM tempdb..syscolumns a left join tempdb..systypes b on a.xtype=b.xusertype

where b.name not in

('image','text','uniqueidentifier','sql_variant','ntext','varbinary','binary','timestamp')

and a.id=(select id from tempdb..sysobjects where name=@tbname)

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

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

set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 5.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 錯(cuò)誤號(hào)

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

select @sql,@constr,@fdlist

go

標(biāo)簽: excel
主站蜘蛛池模板: 震动筛选机|震动分筛机|筛粉机|振筛机|振荡筛-振动筛分设备专业生产厂家高服机械 | 塑钢件_塑钢门窗配件_塑钢配件厂家-文安县启泰金属制品有限公司 深圳南财多媒体有限公司介绍 | 干洗店加盟_洗衣店加盟_干洗店设备-伊蔻干洗「武汉总部」 | 细沙回收机-尾矿干排脱水筛设备-泥石分离机-建筑垃圾分拣机厂家-青州冠诚重工机械有限公司 | 杭州翻译公司_驾照翻译_专业人工翻译-杭州以琳翻译有限公司官网 组织研磨机-高通量组织研磨仪-实验室多样品组织研磨机-东方天净 | 透平油真空滤油机-变压器油板框滤油机-滤油车-华之源过滤设备 | 加气混凝土砌块设备,轻质砖设备,蒸养砖设备,新型墙体设备-河南省杜甫机械制造有限公司 | 国际线缆连接网 - 连接器_线缆线束加工行业门户网站 | 重庆磨床过滤机,重庆纸带过滤机,机床伸缩钣金,重庆机床钣金护罩-重庆达鸿兴精密机械制造有限公司 | 高低温试验房-深圳高低温湿热箱-小型高低温冲击试验箱-爱佩试验设备 | 印刷人才网 印刷、包装、造纸,中国80%的印刷企业人才招聘选印刷人才网! | 金属波纹补偿器厂家_不锈钢膨胀节价格_非金属伸缩节定制-庆达补偿器 | 柔性测斜仪_滑动测斜仪-广州杰芯科技有限公司 | 齿轮减速机_齿轮减速电机-VEMT蜗轮蜗杆减速机马达生产厂家瓦玛特传动瑞环机电 | 高中学习网-高考生信息学习必备平台 | 称重传感器,测力传感器,拉压力传感器,压力变送器,扭矩传感器,南京凯基特电气有限公司 | 发光字|标识设计|标牌制作|精神堡垒 - 江苏苏通广告有限公司 | EPDM密封胶条-EPDM密封垫片-EPDM生产厂家 | 真空泵维修保养,普发,阿尔卡特,荏原,卡西亚玛,莱宝,爱德华干式螺杆真空泵维修-东莞比其尔真空机电设备有限公司 | 高速混合机_锂电混合机_VC高效混合机-无锡鑫海干燥粉体设备有限公司 | 等离子表面处理机-等离子表面活化机-真空等离子清洗机-深圳市东信高科自动化设备有限公司 | 电子天平-华志电子天平厂家| 德国EA可编程直流电源_电子负载,中国台湾固纬直流电源_交流电源-苏州展文电子科技有限公司 | 法兰连接型电磁流量计-蒸汽孔板节流装置流量计-北京凯安达仪器仪表有限公司 | 二手回收公司_销毁处理公司_设备回收公司-找回收信息网 | 无锡市珂妮日用化妆品有限公司|珂妮日化官网|洗手液厂家 | 刚性-柔性防水套管-橡胶伸缩接头-波纹管补偿器-启腾供水材料有限公司 | 不锈钢监控杆_监控立杆厂家-廊坊耀星光电科技有限公司 | 深圳货架厂_仓库货架公司_重型仓储货架_线棒货架批发-深圳市诺普泰仓储设备有限公司 | 二次元影像仪|二次元测量仪|拉力机|全自动影像测量仪厂家_苏州牧象仪器 | BOE画框屏-触摸一体机-触控查询一体机-触摸屏一体机价格-厂家直销-触发电子 | 真空冷冻干燥机_国产冻干机_冷冻干燥机_北京四环冻干 | 铣刨料沥青破碎机-沥青再生料设备-RAP热再生混合料破碎筛分设备 -江苏锡宝重工 | 快速门厂家-快速卷帘门-工业快速门-硬质快速门-西朗门业 | 双菱电缆-广州电缆厂_广州电缆厂有限公司 | 锂电池砂磨机|石墨烯砂磨机|碳纳米管砂磨机-常州市奥能达机械设备有限公司 | 培训无忧网-教育培训咨询招生第三方平台 | 智慧养老_居家养老_社区养老_杰佳通 | 高压包-点火器-高压发生器-点火变压器-江苏天网 | 精密交叉滚子轴承厂家,转盘轴承,YRT转台轴承-洛阳千协轴承 | 超声波焊接机,振动摩擦焊接机,激光塑料焊接机,超声波焊接模具工装-德召尼克(常州)焊接科技有限公司 |