declare @sqlexcel [varchar] (255) 
set @sqlexcel='OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="d:\test\test.xls";User ID=Admin;Password=;Extended properties=Excel 8.0')...[123$]'不管用OpenDataSource还是OPENROWSET都一样是microsof错误,存储过程无法保存
请教为什么?网上找了好久都不知道答案。sql

解决方案 »

  1.   

    拼接字符串,内部的一个单引号要用两个代替declare @sqlexcel [varchar] (255) 
    set @sqlexcel='OpenDataSource(''Microsoft.Jet.OLEDB.4.0'',''Data Source="d:\test\test.xls";User ID=Admin;Password=;Extended properties=Excel 8.0'')...[123$]'
      

  2.   


    谢谢,不会报这个错误了,但出现了另外的错误,我的存储过程后面有这样的语句
    insert into #temp(x1,x2)
    SELECT b.b1,a.a1 FROM
    SELECT * FROM
    OpenROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;HDR=YES;IMEX=1;DATABASE=d:\test\test.xls',[123$]) a
    left join user b 
    ON 'a.'+姓名=b.name然后出现了这么一个错误窗口
    今天是第一次学习EXCEL引入SQL,结果没想到如此困难,老是不成功,望略加指教,使用哪个方法最好?
      

  3.   

    上面打多了一个select * from
    就是当度使用
    select * from OPENROWSET......
    也会报错,而且不知道原因
      

  4.   

    先试好SELECT * FROM
    OpenROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;HDR=YES;IMEX=1;DATABASE=d:\test\test.xls','select * from [123$]')
      

  5.   

    数据库如果是64位的话JET PROVIDER是没有的。