一、在SQL數據庫中直接從Excel裏面查詢數據:sql
select \* from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Excel 5.0;HDR=YES;DATABASE=c:\\test.xls',sheet1$)
二、從Excel文件中,導入數據到SQL數據庫中,
shell
select \* into 表 from  OPENROWSET('MICROSOFT.JET.OLEDB.4.0'  ,'Excel 5.0;HDR=YES;DATABASE=c:\\test.xls',sheet1$)
三、從SQL數據庫中,導出數據到Excel(excel存在),數據庫
insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0'  ,'Excel 5.0;HDR=YES;DATABASE=c:\\test.xls',sheet1$)  select \* from 表
四、從SQL數據庫中,導出數據到Excel(excel不存在),
服務器
\---- 導出表 EXEC master..xp\_cmdshell 'bcp 數據庫名.dbo.表名 out "c: est.xls" /c -/S"服務器名" /U"用戶名" -P"密碼"' ---- 導出查詢語句 EXEC master..xp\_cmdshell 'bcp "SELECT au\_fname, au\_lname FROM pubs..authors ORDER BY au\_lname" queryout "c: est.xls" /c -/S"服務器名" /U"用戶名" -P"密碼"'
五、導入導出的存儲過程ide
\--下面是導出真正Excel文件的方法:(請將一下全部代碼複製到存儲過程當中)  ifexists (select\*from dbo.sysobjects where id \=object\_id(N'\[dbo\].\[p\_exporttb\]') andOBJECTPROPERTY(id, N'IsProcedure') \=1) dropprocedure\[dbo\].\[p\_exporttb\] GO  /\*\--數據導出EXCEL   導出表中的數據到Excel,包含字段名,文件爲真正的Excel文件  ,若是文件不存在,將自動建立文件  ,若是表不存在,將自動建立表  基於通用性考慮,僅支持導出標準數據類型  \--鄒建 2003.10(引用請保留此信息)--\*/  /\*\--調用示例   p\_exporttb @tbname='地區資料',@path='c:',@fname='aa.xls' \--\*/ createproc p\_exporttb @tbname sysname, \--要導出的表名 @pathnvarchar(1000), \--文件存放目錄 @fnamenvarchar(250)\=''\--文件名,默認爲表名 as declare@errint,@srcnvarchar(255),@descnvarchar(255),@outint declare@objint,@constrnvarchar(1000),@sqlvarchar(8000),@fdlistvarchar(8000)  \--參數檢測 ifisnull(@fname,'')\=''set@fname\=@tbname+'.xls'  \--檢查文件是否已經存在 ifright(@path,1)<>''set@path\=@path+'' createtable #tb(a bit,b bit,c bit) set@sql\=@path+@fname insertinto #tb exec master..xp\_fileexist @sql  \--數據庫建立語句 set@sql\=@path+@fname ifexists(select1from #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<>0goto lberr  exec@err\=sp\_oamethod @obj,'open',null,@constr if@err<>0goto lberr  /\*\--若是覆蓋已經存在的表,就加上下面的語句 \--建立以前先刪除表/若是存在的話 select @sql='drop table \['+@tbname+'\]' exec @err=sp\_oamethod @obj,'execute',@out out,@sql \--\*/  \--建立表的SQL select@sql\='',@fdlist\='' select@fdlist\=@fdlist+',\['+a.name+'\]'  ,@sql\=@sql+',\['+a.name+'\] '  +case  when b.name like'%char'  thencasewhen a.length\>255then'memo'  else'text('+cast(a.length asvarchar)+')'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 syscolumns a leftjoin systypes b on a.xtype\=b.xusertype where b.name notin('image','uniqueidentifier','sql\_variant','varbinary','binary','timestamp')  andobject\_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<>0goto lberr  exec@err\=sp\_oadestroy @obj  \--導入數據 set@sql\='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=YES;IMEX=1  ;DATABASE='+@path+@fname+''',\['+@tbname+'$\])'  exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from '+@tbname)  return  lberr:  exec sp\_oageterrorinfo 0,@src out,@desc out lbexit:  selectcast(@errasvarbinary(4)) as 錯誤號  ,@srcas 錯誤源,@descas 錯誤描述  select@sql,@constr,@fdlist go    ifexists (select\*from dbo.sysobjects where id \=object\_id(N'\[dbo\].\[p\_exporttb\]') andOBJECTPROPERTY(id, N'IsProcedure') \=1) dropprocedure\[dbo\].\[p\_exporttb\] GO  /\*\--數據導出EXCEL   導出查詢中的數據到Excel,包含字段名,文件爲真正的Excel文件  若是文件不存在,將自動建立文件  若是表不存在,將自動建立表  基於通用性考慮,僅支持導出標準數據類型  \--鄒建 2003.10(引用請保留此信息)--\*/  /\*\--調用示例   p\_exporttb @sqlstr='select \* from 地區資料'  ,@path='c:',@fname='aa.xls',@sheetname='地區資料' \--\*/ createproc p\_exporttb @sqlstrvarchar(8000), \--查詢語句,若是查詢語句中使用了order by ,請加上top 100 percent @pathnvarchar(1000), \--文件存放目錄 @fnamenvarchar(250), \--文件名 @sheetnamevarchar(250)\=''\--要建立的工做表名,默認爲文件名 as declare@errint,@srcnvarchar(255),@descnvarchar(255),@outint declare@objint,@constrnvarchar(1000),@sqlvarchar(8000),@fdlistvarchar(8000)  \--參數檢測 ifisnull(@fname,'')\=''set@fname\='temp.xls' ifisnull(@sheetname,'')\=''set@sheetname\=replace(@fname,'.','#')  \--檢查文件是否已經存在 ifright(@path,1)<>''set@path\=@path+'' createtable #tb(a bit,b bit,c bit) set@sql\=@path+@fname insertinto #tb exec master..xp\_fileexist @sql  \--數據庫建立語句 set@sql\=@path+@fname ifexists(select1from #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<>0goto lberr  exec@err\=sp\_oamethod @obj,'open',null,@constr if@err<>0goto 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'  thencasewhen a.length\>255then'memo'  else'text('+cast(a.length asvarchar)+')'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 leftjoin tempdb..systypes b on a.xtype\=b.xusertype where b.name notin('image','uniqueidentifier','sql\_variant','varbinary','binary','timestamp')  and a.id\=(select id from tempdb..sysobjects where name\=@tbname)  if@@rowcount\=0return  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<>0goto 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:  selectcast(@errasvarbinary(4)) as 錯誤號  ,@srcas 錯誤源,@descas 錯誤描述  select@sql,@constr,@fdlist go