sql sever读取写入Excel总结

主要用到openrowset,opendatasource系统函数,这两个函数任意一个都能完成任务

用这种方法可以实现Excel和sqlserver表之间的相互导入导出。

如果使用openrowset报错,可以参看这篇文章http://www.cnblogs.com/xiashengwang/p/3511808.html

openrowset的写法

--3,链接Excel Microsoft Jet 4.0 OLE DB Provider
--读Excel数据,注意Excel必须事先关闭
select * 
from
openrowset(Microsoft.Jet.OLEDB.4.0,Excel 8.0;HDR=Yes;DATABASE=E:/Temp/myExcel20131212.xls, Sheet1$) 

--将数据写入Excel2003文件
--注意:首先需要对Excel的Sheet1的第一行设置与检索列相等的一些值,可以是任意值,
--但最好与列名相同;另外oledb可能对Excel没有写权限,需要对Excel表格的属性--》安全中加一个everyone权限
insert  into   
OPENROWSET(Microsoft.Jet.OLEDB.4.0,Excel 8.0;HDR=Yes;DATABASE=E:/Temp/myExcel20131212.xls,Sheet1$)   
select *  from  dbo.DQuestionData 

opendatasource的写法

select * 
from
opendatasource(Microsoft.Jet.OLEDB.4.0,Excel 8.0;HDR=Yes;DATABASE=E:/Temp/myExcel20131212.xls)...Sheet1$

上面的代码是链接Excel2003的,对于Excel2007的链接 ,由于oledb提供程序不同,所以链接方式会不同。

下面附一个不同的链接方式,也是从网上找到的。

--> Jet 引擎访问 Excel 97-2003  
select * from OpenRowSet(Microsoft.Jet.OLEDB.4.0, Excel 8.0;HDR=Yes;IMEX=1;Database=D:/97-2003.xls, select * from [Sheet1$])  
select * from OpenRowSet(Microsoft.Jet.OLEDB.4.0, Excel 8.0;HDR=Yes;IMEX=1;Database=D:/97-2003.xls, [Sheet1$])  
select * from OpenDataSource(Microsoft.Jet.OLEDB.4.0, Excel 8.0;HDR=Yes;IMEX=1;Database=D:/97-2003.xls)...[Sheet1$]  
select * from OpenDataSource(Microsoft.Jet.OLEDB.4.0, Data Source=D:/97-2003.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1")...[Sheet1$]  
  
--> ACE 引擎访问 Excel 97-2003  
select * from OpenRowSet(Microsoft.ACE.OLEDB.12.0, Excel 12.0;HDR=Yes;IMEX=1;Database=D:/97-2003.xls, select * from [Sheet1$])  
select * from OpenRowSet(Microsoft.ACE.OLEDB.12.0, Excel 12.0;HDR=Yes;IMEX=1;Database=D:/97-2003.xls, [Sheet1$])  
select * from OpenDataSource(Microsoft.ACE.OLEDB.12.0, Excel 12.0;HDR=Yes;IMEX=1;Database=D:/97-2003.xls)...[Sheet1$]  
select * from OpenDataSource(Microsoft.ACE.OLEDB.12.0, Data Source=D:/97-2003.xls;Extended Properties="Excel 12.0;HDR=Yes;IMEX=1")...[Sheet1$]  
  
--> ACE 引擎访问 Excel 2007  
select * from OpenRowSet(Microsoft.ACE.OLEDB.12.0, Excel 12.0;HDR=Yes;IMEX=1;Database=D:/2007.xlsx, select * from [Sheet1$])  
select * from OpenRowSet(Microsoft.ACE.OLEDB.12.0, Excel 12.0;HDR=Yes;IMEX=1;Database=D:/2007.xlsx, [Sheet1$])  
select * from OpenDataSource(Microsoft.ACE.OLEDB.12.0, Excel 12.0;HDR=Yes;IMEX=1;Database=D:/2007.xlsx)...[Sheet1$]  
select * from OpenDataSource(Microsoft.ACE.OLEDB.12.0, Data Source=D:/2007.xlsx;Extended Properties="Excel 12.0;HDR=Yes;IMEX=1")...[Sheet1$]  

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。