如果表已存在,SQL语句为:

insert into aa select * from OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',

'Data Source=D:/OutData.xls;Extended Properties=Excel 8.0')...[sheet1$]

 

其中,aa是表名,D:/OutData.xls是excel的全路径 sheet1后必须加上$

 

如果表不存在,SQL语句为:

SELECT * INTO aa FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',

'Data Source=D:/OutData.xls;Extended Properties=Excel 8.0')...[sheet1$]

 

其中,aa是表名,D:/OutData.xls是excel的全路径 sheet1后必须加上$,outdata.xls必须在SQL电脑上

可能会发生的异常:

 

如果发生“链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 报错。提供程序未给出有关错误的任何信息。

无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 的数据源对象。”异常可能是excel文件未关闭.

 

如果发生“不能将值 NULL 插入列 'Grade',表 'student.dbo.StuGrade';列不允许有空值。INSERT 失败。

语句已终止。”异常,则可能是excel文件与数据库表中的字段不匹配

 

以上操作的是office 2003,如果要操作office 2007则需采用如下方式

 

如果表已存在,SQL语句为:

insert into aa select * from OPENDATASOURCE('Microsoft.Ace.OLEDB.12.0',

'Data Source=D:/OutData.xls;Extended Properties=Excel 12.0')...[sheet1$]

 

其中,aa是表名,D:/OutData.xls是excel的全路径 sheet1后必须加上$

 

如果表不存在,SQL语句为:

SELECT * INTO aa FROM OPENDATASOURCE('Microsoft.Ace.OLEDB.12.0',

'Data Source=D:/OutData.xls;Extended Properties=Excel 12.0')...[sheet1$]

 

其中,aa是表名,D:/OutData.xls是excel的全路径 sheet1后必须加上$

 

如果发生“链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 报错。提供程序未给出有关错误的任何信息。

无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 的数据源对象。”异常可能是excel文件未关闭.

 

 

如果发生“不能将值 NULL 插入列 'Grade',表 'student.dbo.StuGrade';列不允许有空值。INSERT 失败。

语句已终止。”异常,则可能是excel文件与数据库表中的字段不匹配

以上操作的是office 2003,如果要操作office 2007则需采用如下方式

 

另外,还要对一些功能进行配置:

1、打开SQL Server 2005外围应用配置器,选择“功能的外围应用配置器”,选中“启用OPENROWSET或OPENDATASOURCE支持”,点击确定。

2、在C:/WINDOWS目录下将temp文件夹的安全选项卡中,在用户或组名称中,选择“SQLServer2005ReportingServicesWebServiceUser$PC17$MSSQLSERVER(PC17/SQLServer2005ReportingServicesWebServiceUser$PC17$MSSQLSERVER”用户,将此用户的写入,修改权限选中。点击确定。(设置它是因为将此将excel文件读入SQL数据库时,是在C:/WINDOWS/temp下建立了一个临时文件,所以需要将此文件夹的SQLServer2005权限设置为可写入的。如果使用的是管理员帐户,则需要不需此项设置。因为管理员有读写的权限。)

posted on 2013-09-27 14:44  Walamander  阅读(863)  评论(0编辑  收藏  举报