初学的朋友经常遇到的问题!可以看看这里

转载 2006年06月27日 10:57:00


/*--数据导出EXCEL 
            
           导出查询中的数据到Excel,包含字段名,文件为真正的Excel文件 
           如果文件不存在,将自动创建文件 
           如果表不存在,将自动创建表 
           基于通用性考虑,仅支持导出标准数据类型 
 
--邹建  2003.10(引用请保留此信息)--*/ 
 
/*--调用示例 
 
           p_exporttb  @sqlstr='select  *  from  地区资料' 
                       ,@path='c:/',@fname='aa.xls',@sheetname='地区资料' 
--*/ 
create  proc  p_exporttb 
@sqlstr  varchar(8000),                                    --查询语句,如果查询语句中使用了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  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.JET.OLEDB.4.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 
go 


java初学者常见的问题

本文为那些准Java程序员们准备了一系列广为流传的Java最佳编程实践:1.    优先返回空集合而非null如果程序要返回一个不包含任何值的集合,确保返回的是空集合而不是null。这能节省大量的”i...
  • u011225629
  • u011225629
  • 2016年03月30日 09:17
  • 2239

网络管理员常见错误集锦

      协议分析器是网络管理员库中最强有力的工具之一。它能将难处理、耗时长、让CEO们感到恼火甚至不得不重启所有机器的问题转变为能短时处理、易于在每周例行状态报告中反映的问题,为公司省下大量的时间...
  • yangcage
  • yangcage
  • 2006年11月16日 10:35
  • 691

spring cloud使用中遇到的一些偏僻问题

1.eureka dashboard的界面无法加载图片等静态资源;最有可能原因是将EurekaServer和ConfigServer放在了一起,具体参考如下:https://github.com/sp...
  • l153097889
  • l153097889
  • 2018年01月27日 17:00
  • 20

Java开发过程中自己遇到的各种问题汇总(连载中)

Java开发过程中自己遇到的各种问题汇总开篇:这篇文章,全权作为自己的一个问题和错误的笔记录,记录着平时开发过程中,遇到的一些问题,以及相应的解决方法,直接就直白的放在这里了,给自己忘记的时候看看,做...
  • xiaozhouchou
  • xiaozhouchou
  • 2016年11月20日 19:46
  • 697

运行web项目常见错误

404产生的原因为Web服务器(容器)根据请求地址找不到对应资源,以下情况都会出现404的错误提示: 输入的地址有误(应用名大小写不正确,名称拼写不正确) 在web.xml文件中和中的两个不一致 没有...
  • qq_30162219
  • qq_30162219
  • 2017年07月07日 21:44
  • 95

vue.js学习笔记--遇到的那些问题

问题一:配置main.js,vue-router中router-view无法渲染,采用如下方式配置:Vue.use(VueRouter) const routes=[{ path:'/', c...
  • wangzhikui1
  • wangzhikui1
  • 2016年12月12日 19:15
  • 131

多线程编程中遇到的问题总结

1.1  多线程就是多个线程吗?比如说,一个程序里面,原本启动一个线程,现在改启动多个线程,这就叫做多线程了? 通过收集资料,了解到程序是依赖进程的,一个程序中至少包括一个进程,进程是一个程序的容器...
  • whuarui2010
  • whuarui2010
  • 2013年12月17日 21:51
  • 1513

HTML学习中遇到的问题记录

1、在table中经常定义 thead、tbody 以及 tfoot三个标签: thead、tfoot 以及 tbody 元素使您有能力对表格中的行进行分组。当您创建某个表格时,您也许希望拥有一个标题...
  • qq_30337695
  • qq_30337695
  • 2015年12月16日 15:50
  • 512

IOS开发中经常遇到的问题

①xcode6之后为什么TextField无法弹出软键盘 如果能从外接的键盘输入,切换一下键盘,command+shift+k,Xcode6.0.1中只能是一种输入源 ②UITextfield的软键...
  • misakahina
  • misakahina
  • 2015年04月23日 19:58
  • 710

Selenium使用过程中碰到的问题

1.Webdriver Element is not currently visible 解决方法:     (1) 如果定位元素时xpath中使用了@class=   极有可能问题就出在那。 ...
  • wwHRestarting
  • wwHRestarting
  • 2015年06月14日 01:18
  • 688
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:初学的朋友经常遇到的问题!可以看看这里
举报原因:
原因补充:

(最多只允许输入30个字)