当前位置: 首页 > 编程日记 > 正文

sqlserver任务导出Excle

--sql语句就用下面的存储过程
 
/*--数据导出Excel
 
导出查询中的数据到Excel,包含字段名,文件为真正的Excel文件
,如果文件不存在,将自动创建文件
,如果表不存在,将自动创建表
基于通用性考虑,仅支持导出标准数据类型

使用方法:

直接复制执行创建储存过程
--陈润程 2014.04--*/
 
/*--调用示例
 
p_exporttb @sqlstr='select * from 表名',@path='c:\',@fname='aa.xls',@sheetname='sheet1'
--*/
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,                      --查询语句,如果查询语句中使用了order by ,请加上top 100 percent
    @path nvarchar(1000),                 --文件存放目录
    @fname nvarchar(250),                 --文件名
    @sheetname varchar(250)=''            --要创建的工作表名,默认为文件名
as
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='temp.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 (*.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+'"'
 
--连接数据库
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 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
 
--导入数据
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 错误号
,@src as 错误源,@desc as 错误描述
select @sql,@constr,@fdlist

转载于:https://www.cnblogs.com/ChenRunCheng/p/4383652.html

相关文章:

Oracle集合操作

Oracle集合操作 UNION&#xff1a;并集&#xff0c;所有的内容都查询&#xff0c;重复的显示一次 UNION ALL&#xff1a;并集&#xff0c;所有的内容都显示&#xff0c;包括重复的 INTERSECT&#xff1a;交集&#xff1a;只显示重复的 MINUS&#xff1a;差集&#xff1a…

Mongodb 4.0+安装

mongodb 4.0&#xff1a;windows 环境选择默认安装路径&#xff1b;存储文件夹自定义&#xff1a; 1.原配置文件删除.mp2.data下新建db文件夹 Mongod -- dbpath D:MongoDB/data3.&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;close windows防火墙&#xff08;…

JavaScript 慢慢移动的海绵宝宝

前情提要&#xff1a;Javascript 移动的海绵宝宝 这个海绵宝宝是匀速运动、突然停下来的&#xff0c;有点不合理。现实中我们跑步都是速度慢慢减小到0。 要实现这个效果&#xff0c;就必须速度逐渐减小&#xff0c;本质上是盒子的步长逐渐减小。 step (targetLocation - nowL…

Linux(CentOS)目录操作命令、文件操作命令、压缩解压缩命令

一、目录操作命令  ls命令    — 功能说明&#xff1a;显示文件和目录列表。    — 命令格式&#xff1a;ls [参数] [<文件或目录> …]    — 常用参数&#xff1a;      -a : 不隐藏任何以“.”字符开始的条目。      -b : 用八进制形式显示非打…

阿里巴巴持续投入,etcd 正式加入 CNCF

2018 年 12 月 11 日&#xff0c;在 KubeCon CloudNativeCon 北美峰会上&#xff0c;etcd 项目正式加入云原生计算基金会&#xff08;CNCF&#xff09;。CNCF 是一个厂商中立的基金会、云原生技术推广和普及的领导者。 etcd 在 2013 年由李响&#xff0c;Brandon Philips, Al…

小机上监控AIX和数据库管理系统的运行情况直到性能优化(SQL语句优化和排除硬件问题)...

AIX下的命令 1)topas 检测操作系统的运行状况 2)nmon(c--cpu,m--memory,d--disk) 检测这3个的情况 ORACLE下的命令 提示&#xff1a;下面这些视图都是实时监控生产机上数据库的情况查询结果每个时刻都随数据库系统当时的情况在变化 &#xff08;1&#xff09; selectopname,…

从前端框架到前端架构参考资料

参考资料 • Wiki - MVC https://zh.wikipedia.org/wiki/MVC • Wiki - MVVM https://zh.wikipedia.org/wiki/MVVM • Mustach https://github.com/janl/mustache.js#usage • Handlebars Introduction | Handlebars • React React – A JavaScript library for building us…

(转)(c#)数据结构与算法分析 --树

树 首先&#xff0c;在win下&#xff0c;进入命令行&#xff0c;输入tree&#xff0c;它会以树的形式返回当前文件夹下的所有子文件夹及文件。如上图&#xff0c;就是一个树。就像一棵被颠倒过来的苹果树&#xff0c;每一个元素称之为节点&#xff0c;如图&#xff0c;A就是这棵…

.vimrc文件

1 set number 2 set shiftwidth4 3 set softtabstop4 4 set tabstop4 5 set expandtab 6 "set hlsearch 7 set noerrorbells 8 set smartindent 9 set autoindent 10 set nobackup 11 syntax on 12 filetype on 13 filetype plugin on 14 filetype indent on转载于:https:…

Javascript中undefined,NaN等特殊比较

以下内容转自&#xff1a;http://blog.csdn.net/hongweigg/article/details/380900931、问题&#xff1a;在Javascript中&#xff0c;typeof(undefined) undefined成立吗&#xff1f; 答案&#xff1a;不成立&#xff0c;全局函数 typeof()返回值类型为字符串类型&#xff0c;…

ECMAScript 6 模板字面量的常见用法

模板字面量可以理解成是字符串的一种&#xff0c;形式上用反引号 将内容括起来。 目录 特点一&#xff1a;模板字面量会保留反引号内部的空格、回车、tab,会将\n,\t翻译。 特点二&#xff1a;支持字符串插值 特点三&#xff1a;和标签函数搭配食用 特点一&#xff1a;模板…

Pycharm去掉项目所有 # 注释

通过快捷键ctrlshiftR 进入 项目全局替换窗口&#xff0c;点击右上角 勾选正则&#xff0c;然后 搜索框输入 (#.*) 即可 &#xff0c;然后点击 replace all 去掉所有注释 转载于:https://www.cnblogs.com/rgcLOVEyaya/p/RGC_LOVE_YAYA_890days.html

引擎设计跟踪(九.14.2i) Android GLES 3.0 完善

最近把渲染设备对应的GLES的API填上了. 主要有IRenderDevice/IShader/ITexture/IGraphicsResourceManager/IIndexBuffer/IVertexBuffer.都是体力活, 根据文档(https://www.khronos.org/opengles/sdk/docs/man3/)填上对应的API就可了.遇到的问题纪录在下面: Stick to the standa…

NUnit在VS2008中的安装使用

声明&#xff1a;在方法二中图片可以显示不完整&#xff0c;读者可以将图片保存到本地查看。看完再删除了。方法一为转载的。方法二是自己写的。 方法一、 1、从NUnit官网&#xff08;http://www.nunit.org/index.php&#xff09;下载最新版本NUnit&#xff0c;当前版本为NUnit…

Egg 初学笔记

egg是什么 egg.js简称egg&#xff0c;属于小而美的框架&#xff0c;不直接提供功能&#xff0c;它拥有强大的插件机制&#xff0c;扩展性好&#xff0c;egg基于koa(https://eggjs.org/zh-cn/intro/egg-and-koa.html)开发&#xff0c;可基于egg制定上层框架。 Koa特点 提供很好…

HttpModule与HttpHandler详解

ASP.NET对请求处理的过程&#xff1a;当请求一个*.aspx文件的时候&#xff0c;这个请求会被inetinfo.exe进程截获&#xff0c;它判断文件的后缀&#xff08;aspx&#xff09;之后&#xff0c;将这个请求转交给 ASPNET_ISAPI.dll&#xff0c;ASPNET_ISAPI.dll会通过http管道&…

《梦断代码Dreaming In Code》阅读笔记(三)

最后这几章感觉上更多是从软件完成整体上来讲的。比如说技术、方法等。 在我看来&#xff0c;其实一个团队一直坚持一种好的、先进的方法是不可少的。如果一个优秀的团队刚愎自用&#xff0c;只随着成员们喜好发展&#xff0c;那不能长久。比如说&#xff0c;在开发软件工程课程…

个人建议之PHP面试的准备

你好&#xff0c;是我琉忆——PHP程序员面试笔试系列图书的作者。 随着越来越多的人开始迈入PHP开发工程师的队列&#xff0c;不管是一个PHP新手还是一个有一两年开发经验的PHPer都不得不去面对找工作前面试这件事。 我现在以个人对面试的经历和见解来全面的对PHP面试考点PHP真…

关于2D互动技术的一些要点

没有动画的程序很难称作是互动产品。 2D图形技术主要涵盖 动画原理 动画是定时器改变元素属性&#xff0c;渲染引擎重新渲染的过程。 动画的本质是 关于时间的函数 PS:右图就是一个快进慢出的动画 动画的要素

Xamarin开发Anroid应用介绍

第1章 Xamarin开发Anroid应用介绍 如今智能手机已经盛行了好几年&#xff0c;而针对这些智能手机的软件开发也变得异常火热。但是在Android平台下只能使用Java开发&#xff0c;iOS平台下也只能使用Objective-C或Swift开发本文选自Xamarin Android开发实战上册。 对于那些C#程序…

忘记Rxjava吧,你应该试试Kotlin的协程

0.前言 协程以前一直是Kotlin作为实验性的一个库&#xff0c;前些日子发现1.3版本的kotlin relese了协程&#xff0c;所以就找时间研究了一下&#xff0c;本来早就想写这篇文章了&#xff0c;但是因为离职换工作的原因&#xff0c;迟迟未能动笔&#xff0c;这两天终于算搞完了&…

数据可视化相关网站

D3 gallery Gallery / D3 / Observable Flowing Data / NYTimes / … FlowingData | Data Visualization and Statistics Data Video Explorer Data Video Explorer 配色网站 配色网站 Material Design Color, Flat Colors, Icons, Color Palette | Material UI Colo…

【2012天津区域赛】部分题解 hdu4431—4441

1001&#xff1a; 题意&#xff1a;给你13张麻将牌&#xff0c;问可以胡哪些张 思路&#xff1a; 枚举可能接到的牌&#xff0c;然后dfs判断能否胡 1002&#xff1a; 题意&#xff1a; 已知n&#xff0c;m 求 n的所有约数在m进制下的平方和 做法&#xff1a;队长用java高精度写…

彻底理解OkHttp - OkHttp 源码解析及OkHttp的设计思想

OkHttp 现在统治了Android的网络请求领域&#xff0c;最常用的框架是&#xff1a;Retrofitokhttp。OkHttp的实现原理和设计思想是必须要了解的&#xff0c;读懂和理解流行的框架也是程序员进阶的必经之路&#xff0c;代码和语言只是工具&#xff0c;重要的是思想。 在OKhttp 源…

访问 Microsoft SQL Server 元数据的三种

上海微创软件有限公司 肖桂东适用读者&#xff1a;Microsoft SQL Server 中、高级用户元数据简介元数据 (metadata) 最常见的定义为"有关数据的结构数据"&#xff0c;或者再简单一点就是"关于数据的信息"&#xff0c;日常生活中的图例、图书馆目录卡和名片…

apply()智用:需要几个参数但只有一个参数数组

比奇堡的居民海绵宝宝&#xff0c;派大星&#xff0c;蟹老板正在开party let arr [SpongeBob,Patrick,Mr.Crab]; 如果章鱼哥来了&#xff0c;珊迪也来了 arr.push(Squidward Tentacles,Sandy); 此时一共派对有5人 如果章鱼哥和珊迪一起来了 arr.push.apply(arr,[Squidwar…

HTML转WORD WORD转PDF--来源网络

从网上找的代码&#xff0c;先收藏下。 功能&#xff1a;实现HTML转WORD&#xff0c;WORD转PDF view source print?using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using Syst…

正则表达式小结

基础 数量匹配 *代表{0,} 代表{1,} ?代表{0,1} [0-9][0-9]{1,} 表示匹配0~9中的任意数字&#xff0c;并且至少1位。 [0-9]*[0-9]{0,} 表示匹配0~9中的任意数字&#xff0c;并且可以是0位&#xff08;不存在&#xff09;。 [0-9]?[0-9]{0,1} 表示匹配0~9中的任意数字&…

Log控制台打印设置

android Log.isLoggable方法的使用 android 动态控制logcat日志开关,通过Log.isLoggable&#xff08;TAG,level&#xff09;方法动态控制&#xff0c;1.添加日志的时候加入判断&#xff0c; String TAG"Volley"; boolean isDbugLog.isLoggable(TAG, Lo…

JavaScript 定义类时如何将方法提取出来

现在我们有一个海洋生物类 function marineLife(name,job,friend){this.name name;this.job job;this.friend friend;this.introduceMyself function(){console.log(大家好&#xff01;我叫this.name,我是一名this.job,我最好的朋友是this.friend);} } 让我们用这个类新建…