SQL Server 带列名导出到excel的实际操作

文章主要描述的是SQL Server 带列名导出到excel的实际操过程,以及在其实际操作中的值得我们大家注意的事项与其实际应用代码的描述,以下就是文章的主要内容的详细描述,望大家在浏览之后会对其有更深的了解。

sql语句就用下面的存储过程

 

数据SQL Server 带列名导出Excel

导出查询中的数据到Excel,包含字段名,文件为真正的Excel文件

,如果文件不存在,将自动创建文件

 

,如果表不存在,将自动创建表

 

基于通用性考虑,仅支持SQL Server 带列名导出标准数据类型

 

邹建 2003.10*/

 

调用示例

p_exporttb @sqlstr=’select * from 地区资料’

,@path=’c:’,@fname=’aa.xls’,@sheetname=’地区资料’

 

  1. */  
  2. if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_exporttb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)  
  3. drop procedure [dbo].[p_exporttb]  
  4. GO 

create proc p_exporttb

@sqlstr sysname, 查询语句,如果查询语句中使用了order by ,请加上top 100 percent

 

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

 

@fname nvarchar(250), 文件名

 

@sheetname varchar(250)=” 要创建的工作表名,默认为文件名

 

  1. as   
  2. declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int  
  3. declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000) 

参数检测

  1. if isnull(@fname,'')='' set @fname='temp.xls' 
  2. if isnull(@sheetname,'')='' set @sheetname=replace(@fname,'.','#') 

 

SQL Server 带列名导出至excel,检查文件是否已经存在

  1. if right(@path,1)<>'' set @path=@path+''  
  2. create table #tb(a bit,b bit,c bit)  
  3. set @sql=@path+@fname  
  4. insert into #tb exec master..xp_fileexist @sql 

数据库创建语句

  1. set @sql=@path+@fname  
  2. if exists(select 1 from #tb where a=1)  
  3. set @constr='DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';READONLY=FALSE' 
  4. +';CREATE_DB="'+@sql+'";DBQ='+@sql  
  5. else  
  6. set @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 5.0;HDR=YES' 
  7. +';DATABASE='+@sql+'"' 

连接数据库

  1. exec @err=sp_oacreate 'adodb.connection',@obj out  
  2. if @err<>0 goto lberr  
  3. exec @err=sp_oamethod @obj,'open',null,@constr  
  4. if @err<>0 goto lberr  

 

创建表的SQL

  1. declare @tbname sysname  
  2. set @tbname='##tmp_'+convert(varchar(38),newid())  
  3. set @sql='select * into ['+@tbname+'] from('+@sqlstr+') a'  
  4. exec(@sql)  
  5.  
  6. select @sql='',@fdlist='' 
  7. select @fdlist=@fdlist+','+a.name  
  8. ,@sql=@sql+',['+a.name+'] '  
  9. +case when b.name in('char','nchar','varchar','nvarchar') then  
  10. 'text('+cast(case when a.length>255 then 255 else a.length end as varchar)+')'  
  11. when b.name in('tynyint','int','bigint','tinyint') then 'int'  
  12. when b.name in('smalldatetime','datetime') then 'datetime'  
  13. when b.name in('money','smallmoney') then 'money'  
  14. else b.name end  
  15. FROM tempdb..syscolumns a left join tempdb..systypes b on a.xtype=b.xusertype  
  16. where b.name not in('image','text','uniqueidentifier','sql_variant','ntext','varbinary','binary','timestamp')  
  17. and a.id=(select id from tempdb..sysobjects where name=@tbname)  
  18. select @sql='create table ['+@sheetname  
  19. +']('+substring(@sql,2,8000)+')'  
  20. ,@fdlist=substring(@fdlist,2,8000)  
  21. exec @err=sp_oamethod @obj,'execute',@out out,@sql  
  22. if @err<>0 goto lberr  
  23. exec @err=sp_oadestroy @obj  

 

导入数据

  1. set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 5.0;HDR=YES 
  2. ;DATABASE='+@path+@fname+''',['+@sheetname+' $])'  
  3. exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from ['+@tbname+']')  
  4. set @sql='drop table ['+@tbname+']'  
  5. exec(@sql)  
  6. return  
  7. lberr:  
  8. exec sp_oageterrorinfo 0,@src out,@desc out  
  9. lbexit:  

 

select cast(@err as varbinary(4)) as 错误号

 

,@src as 错误源,@desc as 错误描述

 

select @sql,@constr,@fdlist

以上的相关内容就是对

SQL Server 带列名导出至excel的介绍,望你能有所收获。

【编辑推荐】

  1. MS-SQL server数据库开发中的技巧
  2. SQL Server里调用COM组件的操作流程
  3. 配置Tomcat+SQL Server2000连接池流程
  4. SQL Server Model增加一些变化,很简单!
  5. 易混淆的SQL Server数据类型列举

 

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/228456.html<

(0)
运维的头像运维
上一篇2025-04-18 07:43
下一篇 2025-04-18 07:45

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注