导入excel时 OLE DB 4和OLE DB 12接口不能同时使用吗?

jmeycn 2014-07-20 10:27:38
我有个存储过程3个参数是导入3个excel文件,考虑到用户excel版本的有2003和2007,
导入时代码根据文件扩展名识别,使用的oledb接口也不一样,
我发现导入的3个文件格式都一样时没有问题,一旦参数中同时包含2003和2007不同版本的文件
会报错:

链接服务器"(null)"的 OLE DB 访问接口 "Microsoft.Ace.OLEDB.12.0" 返回了消息 "未指定的错误"。
消息 7303,级别 16,状态 1,第 1 行
无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Ace.OLEDB.12.0" 的数据源对象。

我已经将接口属性“动态参数”和“进程内使用”全部勾选或取消,然后重启服务,但不管怎么设置都不能满足需要
这两个接口是不是不能同时使用呢?
以下是导入代码
excel2007:SELECT * FROM OpenDataSource('Microsoft.Ace.OLEDB.12.0','Data Source=C:\***.xlsx;Extended properties="Excel 12.0;HDR=Yes"')...[Sheet1$]
excel2003:SELECT * FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source=C:\***.xls;Extended properties = Excel 8.0')...[Sheet1$]
...全文
155 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jmeycn 2014-07-23
  • 打赏
  • 举报
回复
刚才又试了一下,我把两个接口都打开,对应的两个属性也打开,忽然发现可以同时导入多个版本的excel表了,晕死 谢谢各位了、
jmeycn 2014-07-23
  • 打赏
  • 举报
回复
有人说:高版本总能打开低版本文件的。 我只打开了12.0的接口,不能打开excel2003版本的文件, 以下是错误消息: 消息 7302,级别 16,状态 1,第 1 行 无法创建链接服务器 "(null)" 的 OLE DB 访问接口 "MSDASC" 的实例。 是不是不同版本的文件只能用专门的访问接口打开呢?
KevinLiu 2014-07-22
  • 打赏
  • 举报
回复
64为的已经没有JET驱动了。
  • 打赏
  • 举报
回复
都用12.0的库就可以了,别用4.0了,因为12.0的库也可以操作原来用4.0操作的数据。
Tiger_Zhao 2014-07-21
  • 打赏
  • 举报
回复
都用 OLEDB 12 打开好了,高版本总能打开低版本文件的。

在直接操作 Excel.Application 对象时,不同版本函数或参数有点差异,需要区分对待。
而你确保有 OLEDB 12 驱动的情况下,是不需要区别对待的。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧